类方法@classmethod

Posted zengsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类方法@classmethod相关的知识,希望对你有一定的参考价值。

类方法 @classmethod
类方法是用于描述类的行为的方法,类方法属于类,不属于类的实例

说明:
  类方法需要使用@classmethod装饰器定义
  类方法至少有一个形参,第一个形参用于绑定类,约定写为‘cls‘
  类和该类的实例都可以调用类方法

  类方法不能访问此类创建的实例的属性
  

class A:
    v = 0   # 类变量(类属性)

    @classmethod     
    def get_v(cls):    #如果是类方法,那么函数的第一个参数一定是cls,因此cls.变量名,就可以调用类变量
        return cls.v     # 用cls访问变量v

    @classmethod
    def set_v(cls, x):
        cls.v = x

print("A.v = ", A.get_v())  #调用类方法得到类变量的值
A.set_v(100)

print("A.v = ", A.get_v())

a = A()   #a绑定A类型的一个实例对象
print(a.get_v())   #此类的实例也可以用该类方法   a.__class__传给cls


输出结果:
[email protected]:~/zengsf$ python3 exercise824.py
A.v =  0
A.v =  100
100

 






以上是关于类方法@classmethod的主要内容,如果未能解决你的问题,请参考以下文章

@classmethod和@staticmethod

python 类中staticmethod,classmethod,普通方法

python类方法@classmethod与@staticmethod

@staticmethod与@classmethod的异同点

类方法@classmethod

@staticmethod和@classmethod的作用与区别