python在类中定义变量,python 怎么定义变量
学过JAVA或者C之类语言的程序员,去学python类设计的时候会觉得很难受,因为Python太自由了,让人无所适从。至于Python定义类时的变量,其定义、作用域、操作方法都比以上两种语言有更多的可操作空间。
Python中定义的变量分为类变量和实例变量(也叫成员变量和对象变量)。类变量直接定义在类中(而不是在函数中),前面没有自我修改;相反,实例变量大多定义在实例函数中,由“自己”定义。变量名”。当然也有例外。类变量和实例变量都可以在类定义之后定义(这个特性让我傻眼)。
首先,定义类变量和实例变量
先看正常的:
class Person(): person= alive #这是类变量def __init__(self,name,)10-59000self . name #这是实例变量self.age: age #这是实例变量self.gender= #这是实例变量#a=456 #你不能在这里写,会有这是一个类变量。从上面的代码可以看出,Python并没有限制定义类变量和实例变量的顺序,也可以看出类变量不能在函数体中定义。
我们来看看返回工厂,也就是在类定义之后定义变量:
= #创建一个空类= 男 # students 1= [地球#为p1添加一个name属性S1 . name中国] # name属性是一个实例变量printclass Student():S1 . namepass#输出结果:chb#为Person类添加一个类变量Student.behavior= #。这是一个类变量print()student。行为= chb #输出结果:studyprint010-5900S1。behavior(#输出结果:学习所以,Python类的定义很自由。对于变量,既可以在定义类时定义,也可以在定义类后定义。上面两段代码说明了类变量和实例变量定义的区别。先说说类变量和实例变量在使用上的区别。
第二,阶级变量和力量变量的使用
用上面第一个代码块中定义的Person类来解释。
1.类变量可以通过“类名,类变量名”和“实例名,类变量名”读取,即类和实例都可以读取类变量。
) _ _名称__= study p(人)18(打印)人。personif #输出结果:aliveprint=="__main__": p。person= #输出结果:alive2实例变量只能由“实例名”访问。实例变量名”,而该类无权访问实例名。
(_ _ name _ _chb p) Person()print(p . name) #输出结果:CHB printif Person . name=="__main__": #错误:属性错误:类型对象“Person”没有属性“班名。类变量名”和”实例名。类变量名”实际上访问的是同一个命名空间中的变量,所以类变量具有“一变全变”的特点。
= _ _名称__(pchb 人) (,1)人。person(print) p . personif #输出结果:dieprint=="__main__": person。person= #输出:die4。使用“实例名”时。类变量名称来赋值一个类变量,如果该类变量是变量数据类型,则该类变量可以赋值成功;否则,将在实例变量所在的命名空间中创建一个与类变量同名的实例变量进行赋值,类变量不会被赋值。此时,不能再使用“实例名”读取类变量。“类变量名”。但是,如果实例名。类变量名分配一个变量数据类型,你可以分配一个类变量。
(_ _姓名__chb p) 人= die 。人(打印)p。人(#输出结果:模具印刷) 页__字典__if #输出结果:{ 性别: 男,=="__main__": 年龄:18,姓名: chb}打印= 人。人员(#输出结果:活的公共场所chb 1) 打印= die 位置(#输出结果:[北京 , 北京]打印)人。地点(#输出结果:[北京 , 北京]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。