classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
类方法既可以直接类调用 C.f()
也可以进行实例调用 C().f()
具体实现:
>>> class C:
... @classmethod
... def f(self):
... print "This is a class method"
...
>>> C.f()
This is a class method
>>> c = C()
>>> c.f()
This is a class method
>>> class D:
... def f(self):
... print " This is not a class method "
...
>>> D.f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method f() must be called with D instance as first argument (got nothing instead)
>>> d = D()
>>> d.f()
This is not a class method