此文章已不再更新,查看最新版文章:
《Python @staticmethod和@classmethod》
------------------------------------------------- 分隔符 -------------------------------------------------
一般来说,类的函数都需要实例化后,通过实例化对象来使用。就像这样:
class A(object):
def a(self)
print('a')
s = A()
s.a()
>>>'a' (输出)
而有时候,在多个类中都会使用到相同的一些工具函数,或者在一个类中,有一个在别的函数中使用到的通用函数,那么这时候,如果每次使用都要实例化后再调用就太傻了,又造成多余的资源浪费。
这时候,使用@classmethod 和 @staticmethod 装饰器来装饰函数,就可以函数直接使用类名来调用。如:
class A(object):
@classmethod
def a(cls):
print('a')
@staticmethod
def b():
print('b')
def c(self):
A.a()
B.a()