类中三种方法,如下代码所示:
class A():
def foo(self, x):
print("executing foo(%s,%s)" % (self, x))
print('self:', self)
@classmethod
def class_foo(cls, x):
print("executing class_foo(%s,%s)" % (cls, x))
print('cls:', cls)
@staticmethod
def static_foo(x):
print("executing static_foo(%s)" % x)
普通的类方法foo()需要通过self参数隐式的传递当前类对象的实例。
@classmethod修饰的方法class_foo()需要通过cls参数传递当前类对象。
@staticmethod修饰的方法定义与普通函数是一样的。
【参考】