# # # # 类方法
# # # 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)
# 代码块清晰,复用性