请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

@staticmethod 和 @classmethod 的区别

之前在学习类的静态方法和类方法的时候比较好奇两者的区别,课后查了一下,知乎的最高赞回答中有这么一段话:

一般来说classmethod可以完全替代staticmethod。staticmethod唯一的好处是调用时它返回的是一个真正的函数,而且每次调用时返回同一个实例(classmethod则会对基类和子类返回不同的bound method实例),但这点几乎从来没有什么时候是有用的。不过,staticmethod可以在子类上被重写为classmethod,反之亦然,因此也没有必要提前将staticmethod全部改为classmethod,按需要使用即可。

其中:“staticmethod唯一的好处是调用时它返回的是一个真正的函数,而且每次调用时返回同一个实例(classmethod则会对基类和子类返回不同的bound method实例)”不太理解,学完继承后进行了如下测试:
测试代码和结果

老师,这结果是表示staticmethod和classmethod都是返回不同的实例吗?如果不是,又该怎么理解我加粗的那句话呢?

正在回答

1回答

返回实例是什么意思?一个静态方法或者类方法返回什么不是由函数内部return决定的吗?我没太懂这里说的返回时指什么?

0 回复 有任何疑惑可以回复我~
  • 提问者 Whalien #1
    我也看不懂,查了很多社区都没找到我能理解的示例,不过两者的区别大致理解了一些
    回复 有任何疑惑可以回复我~ 2019-08-10 10:50:07
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信