这之间有什么区别:
class Dummyclass:
value = 4
def dummymethod(value):
Dummyclass.value = value
Dummyclass.dummymethod(31)
和:
class Dummyclass:
value = 4
@classmethod
def dummymethod(cls, value):
cls.value = value
Dummyclass.dummymethod(31)
除了有@classmethod
吗?
答案 0 :(得分:0)
区别是:
DummyClass.dummymethod(42)
,但不能调用DummyClass().dummymethod(42)
(因为后者返回一个绑定方法,该方法尝试将self
作为第一个参数传递)。使用装饰器,两者的行为将相同。dummymethod
,而没有修饰符,则您将始终仅操作Dummyclass
;而使用decorator时,您将收到子类作为参数,从而可以实现适当的继承。