Python@classmethod-is';cls&x27;只是编码风格的要求?
这两者的区别在哪里:Python@classmethod-is';cls&x27;只是编码风格的要求?,python,class-method,Python,Class Method,这两者的区别在哪里: class Dummyclass: value = 4 def dummymethod(value): Dummyclass.value = value Dummyclass.dummymethod(31) 以及: 除了有一个@classmethod?之外,区别在于: 如果没有decorator,您可以调用DummyClass.dummymethod(42),但不能调用DummyClass().dummymethod(42)(因为后者返
class Dummyclass:
value = 4
def dummymethod(value):
Dummyclass.value = value
Dummyclass.dummymethod(31)
以及:
除了有一个@classmethod
?之外,区别在于:
- 如果没有decorator,您可以调用
,但不能调用DummyClass.dummymethod(42)
(因为后者返回一个绑定方法,该方法试图将DummyClass().dummymethod(42)
作为第一个参数传递)。对于装饰者,两者的行为都是一样的self
- 如果您继承这个类并对子类调用
,而不使用decorator,那么您将始终只操作dummymethod
;使用decorator时,您将收到子类作为参数,从而可以实现正确的继承Dummyclass
class Dummyclass:
value = 4
@classmethod
def dummymethod(cls, value):
cls.value = value
Dummyclass.dummymethod(31)