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