# # # # 类方法 # # # class A: # # # def func(self): # 普通方法 # # # print(self) # # # # # # @classmethod # 类方法 # # # def func1(cls): # # # print(cls) # # # a = A() # # # a.func() # # # A.func(a) # # # # <__main__.A object at 0x00000208AE3DB400> # # # # <__main__.A object at 0x00000208AE3DB400> # # # A.func1() #<class ‘__main__.A‘> # # # # 类方法:通过类名调用的方法,类方法中第一个参数将=约定俗称为cls,python自动将类名传递给cls # # # a1 = A() # # # a.func1() # 通过对象调用类方法,cls是对象本身 # # # # # # 类方法的应用场景 # # #1 类中有些方法不需要对象参与 # # class A: # # name = "dudu" # # count = 1 # # # # # def func(self): # # # return A.name + str(A.count + 1) # # @classmethod # # def func(cls): # # return cls.name + str(cls.count + 1),cls # # # # class B(A): # # pass # # # # print(B.func()) # # # print(A.func(111)) # 需要传入一个无意义参数,不可取 # # # # # a = A() # # # print(a.func()) # 这里使用对象来改版了静态字段,虽然可以操作,但是不方便阅读。所以使用类方法 # # print(A.func()) # # # 2 对类中静态变量进行改变时需要用到 # #3 继承中父类得到子类的类空间 # # # 不通过类方法,父类得到子类的类空间里面的任意值 # # class A: # # age = 99 # # # # def func(self): # # print(self) # # print(self.age) # # # # class B(A): # # age = 22 # # # # b= B() # # b.func() # class A: # age = 99 # @classmethod # def func(cls): # print(cls) # print(cls.age) # # class B(A): # age = 22 # # B.func() # # 通过类方法不止可以查,还可以改 # # 静态方法,不传入self但可以传入其他参数,作用与单独定义函数以相试,但更加清晰 class A: @staticmethod def func(a): print("666") print(a) A.func(44) # 代码块清晰,复用性
类方法classmethod,静态方法staticmethod
原文:https://www.cnblogs.com/yfjly/p/10592975.html