之前在学习类的静态方法和类方法的时候比较好奇两者的区别,课后查了一下,知乎的最高赞回答中有这么一段话:
一般来说classmethod可以完全替代staticmethod。staticmethod唯一的好处是调用时它返回的是一个真正的函数,而且每次调用时返回同一个实例(classmethod则会对基类和子类返回不同的bound method实例),但这点几乎从来没有什么时候是有用的。不过,staticmethod可以在子类上被重写为classmethod,反之亦然,因此也没有必要提前将staticmethod全部改为classmethod,按需要使用即可。
其中:“staticmethod唯一的好处是调用时它返回的是一个真正的函数,而且每次调用时返回同一个实例(classmethod则会对基类和子类返回不同的bound method实例)”不太理解,学完继承后进行了如下测试:
老师,这结果是表示staticmethod和classmethod都是返回不同的实例吗?如果不是,又该怎么理解我加粗的那句话呢?