“StaticMethod”和“classMethod”的区别是什么?

“StaticMethod”和“classMethod”的区别是什么?

@staticmethod还有一个装饰着@classmethod?


慕斯709654
浏览 689回答 3
3回答

狐的传说

A 静态法是一个不知道它被调用的类或实例的方法。它只获取传递的参数,没有隐含的第一个参数。在Python中,它基本上是无用的-您可以只使用一个模块函数,而不是一个静态方法。A 类方法另一方面,是作为第一个参数传递它被调用的类或被调用的实例的类的方法。当您希望方法成为类的工厂时,这是非常有用的:因为它获得了作为第一个参数调用的实际类,所以即使涉及到子类,也可以实例化正确的类。例如,观察dict.fromkeys(),类方法在子类上调用时返回子类的实例:>>> class DictSubclass(dict):...     def __repr__(self):...         return "DictSubclass"... >>> dict.fromkeys("abc"){'a': None, 'c': None, 'b': None}>>> DictSubclass.fromkeys("abc")DictSubclass>>> 

慕妹3242003

基本上@classmethod创建一个方法,其第一个参数是从它调用的类(而不是类实例),@staticmethod没有任何隐含的参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python