Python 中 @staticmethod 和 @classmethod 的区别是什么?

发布于 2022-09-21 08:52:56
关注者
0
被浏览
25
2 个回答
  • 匿名网友
    匿名网友 2022-09-21
    相同点:都可以通过Class.method()的方式调用 不同点:classmethod第一个参数是cls,可以引用类变量;staticmethod和普通函数一样,只不过是放在类里面组织的
  • 匿名网友
    匿名网友 2022-09-21
    Python有3种方法,静态方法(staticmethod),类方法(classmethod)和实例方法。 对于一般的函数foo(x),它跟类和类的实例没有任何关系,直接调用foo(x)即可。 当我们需要和类直接进行交互,而不需要和实例进行交互时,类方法是最好的选择。类方法与实例方法类似,但是传递的不是类的实例,而是类本身,第一个参数是cls。我们可以用类的实例调用类方法,也可以直接用类名来调用。 作用 • 使用场景:classmethod在一些工厂类的情况下使用较多,也就是说OOP里继承的时候使用,staticmethod一般情况下可以替换为外部的函数,后者继承的时候不可更改,和C++/JAVA中的静态方法很相似 • 有利于组织代码,同时有利于命名空间的整洁。
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看