cls为什么不能用作变量名,python怎么定义类变量

  cls为什么不能用作变量名,python怎么定义类变量

  本文主要介绍python类名和类方法cls来修改类变量的值。你不能通过类对象修改类变量的值。其实本质就是给类对象添加新的名字和年龄变量。以下更多信息,请参考各位朋友。

  你不能通过类对象修改类变量的值。事实上,两个新的实例变量name和age被添加到类对象中。它不会影响该类的其他实例化对象,更不用说同名的类变量了。与类变量不同,实例变量只能通过类名访问,而不能通过类名访问。通过cls和class name修改类变量的值,会修改同名的类变量,会影响所有实例化的对象ClassPerson 3360。

  名称=杰里

  年龄=20

  def __init__(自己,姓名,年龄):

  self.name=name

  年龄=年龄

  印刷体(建造者,姓名,年龄)

  @classmethod

  定义A(cls):

  # cls()相当于Person()类,

  #类变量不能通过类对象p修改。

  p=cls(Tom ,18)

  打印( cls: ,cls,p)

  返回p

  @classmethod

  定义B(cls):

  # Class方法cls可以直接调用类变量

  打印( B结果: ,分类名称,分类年龄)

  @classmethod

  定义C(cls):

  # Class方法cls可以直接调用类变量

  # cls和类名一样,可以修改类变量的值,这将影响所有实例化的对象。

  Cls.name="曹操"

  年龄=50岁

  if __name__==__main__:

  人。乙()

  人。c()

  Print(修改C方法后,类变量的值:,Person.name,Person.age)

  #您可以使用类名直接调用类方法

  人=人。答()

  打印(姓名,年龄)

  Print(最终类变量的值:,Person.name,Person.age)

  d : MC venv Scripts python . exe d :/MC/test 01 . py

  B结果:

  杰瑞20

  曹操50,C方法修改后,类变量的值:

  构造者Tom 18

  cls : class“_ _ main _ _”。人 __main__。0x000002362F849D00处的个人对象

  汤姆18

  最终类变量的值:

  曹操50

  进程结束,退出代码为0

  我实例化了两次类Man,每个实例的id都不一样。这取决于类方法:首先用@classmethod描述类方法,然后用‘cls’表示这个类。方法对类属性的处理令人难忘。

  需要注意的是:类方法处理的变量必须是类变量。因为不能在类方法中使用self来寻址实例变量,所以需要把类变量放在前面的描述中,如上面的‘id=0’所示。class变量可以自己访问,所以定义了class变量之后,就不需要在_init_ function中再次描述class变量了。因此,上面代码中的self.id并不是必需的。

  对于需要改变类变量的值(每次调用id_number(cls)方法,类变量id的值都会改变)的学生来说,这个技巧可以有效地用来加载模型。比如把模型封装成一个类,用类的方法描述初始化网络和加载模型,这样每次加载后模型都可以一直使用。

  Man:级

  id=0 #的类变量

  def __init__(self,name):

  self.name=name

  self.id=self.id_number()

  @classmethod

  定义标识号(cls):

  #类方法可以改变类属性,对类属性的处理让人记忆深刻。

  #由类方法处理的变量必须是类变量。因为不能在类方法中使用self来寻址实例变量,

  #所以你需要把类变量放在前面的描述里,如上面的‘id=0’所示。

  cls.id=1

  cls.ww=2

  返回cls.id,cls.ww

  a=人( A )

  打印(身份证)

  b=人( B )

  打印(身份证)

  c=Man.id_number()

  打印(c)

  d : MC venv Scripts python . exe d :/MC/test2 . py

  (1, 2)

  (2, 2)

  (3, 2)

  进程结束,退出代码为0

  这就是这篇关于python类名和类方法cls修改类变量值的文章。关于python修改类变量值的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: