
其实classmethod和staticmethod没有什么特别大的区别。
但还是需要注意如下几点:
-
staticmethod函数参数没有要求,而classmethod函数第一个参数必须传类(该参数名通常使用cls)。
12345678class (object):def class_method(cls):print('this is class method!')def static_method():print('this is static method!') -
调用的方法其实类似,实际上classmethod是先获取了实例的类,再调取该方法。如果直接使用类调用,则无需进行获取类。
1234a = MethodClass()a.class_method()a.__class__.class_method()




近期评论