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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。