Python中@staticmethod和@classmethod的区别【面试题详解】

今天爱分享给大家带来Python中@staticmethod和@classmethod的区别【面试题详解】,希望能够帮助到大家。
staticmethod,静态方法在调用时,对类及实例一无所知

仅仅是获取传递过来的参数,没有隐含的第一个参数,在Python里基本上用处不大,你完全可以用一个模块函数替换它

classmethod, 在调用时,将会获取到其所在的类,或者类实例,作为其第一个参数

当你想将函数作为一个类工厂时,这非常有用: 第一个参数是类,你可以实例化出对应实例对象,甚至子类对象。

可以观察下 dict.fromkey(),是一个类方法,当子类调用时,返回子类的实例


>>> class DictSubclass(dict):
...     def __repr__(self):
...         return "DictSubclass"
...
>>> dict.fromkeys("abc")
{'a': None, 'c': None, 'b': None}
>>> DictSubclass.fromkeys("abc")
DictSubclass
>>>

人已赞赏
Python

Python中类方法的作用是什么【面试题详解】

2020-12-28 21:38:59

Python

Python中如何定义静态方法【面试题详解】

2020-12-28 21:43:21

'); })();