staticmethod and classmethod

python 有三个方法,分别是实例方法,staticmethod(静态方法)和 classmethod(类方法)。

实例方法就是常用的,把一个类实例化,例如:

1
2
3
4
5
class Foo(object):
def my_class(self):
pass
a = Foo()
a.my_class()

staticmethod

staticmethod 不需要通过实例化类,就可以直接调用类里的方法。

1
2
3
4
5
6
class Foo():
@staticmethod
def static_method():
pass
Foo.static_method()

classmethod

classmethod 也不需要实例化类,但是在使用的时候,需要在方法里传入一个 cls 的参数,这相当于把类本身传递进去。在调用的时候可以直接通过Foo.class_method()来调用。

1
2
3
4
5
6
class Foo():
@classmethod
def class_method(cls):
pass
Foo.class_method()