python类变量和实例变量详解,Python实例变量
我们知道,在类中定义的属性和方法都不能在类外直接调用,所以我们完全可以把一个类看作一个独立的作用域(称为类命名空间),然后类属性实际上就是在类命名空间中定义的变量(类方法实际上就是在定义的类命名空间中的函数)。
根据定义属性的位置不同,类属性可以细分为类属性(后来用类变量表示)和实例属性(后来用实例变量表示)。
类变量(类属性)(推荐学习:Python视频教程)
类变量是指定义在类中但在每个类的方法之外的变量。类的特点是类的所有实例化对象可以共享类变量的值,即类变量可以作为所有实例化对象中的公共资源。
注意,建议通过类名直接访问类变量,但是也可以通过对象名访问类变量。
例如,下面的代码定义了一个地址类,并为该类定义了几个类属性:
班级地址:
Detail=广州
post_code=510660
定义信息(自身):
#尝试直接访问类变量
#打印(详细)#错误报告
#通过类访问类变量
打印(Address.detail) #输出到广州
print(address . post _ code)# output 510660
#创建2个类对象
addr1=地址()
addr1.info()
addr2=地址()
addr2.info()
#修改地址类的类变量
Address.detail=佛山
Address.post_code=460110
addr1.info()
Addr2.info()在这个程序中,第二行和第三行代码为Address定义了两个类变量。当程序第一次调用Address对象的info()方法输出两个类变量时,会输出这两个类变量的初始值。接下来程序通过Address类修改两个类变量的值,所以当程序第二次通过info()方法输出两个类变量时,就会输出这两个类变量的修改值。
运行上述代码,您将看到以下输出:
广州。亦称C
510660
广州。亦称C
510660
佛山
460110
佛山
40110从输出结果可以看出,addr1和addr2共享类变量。换句话说,改变类变量的值将作用于这个类的所有实例化对象。
实例变量指的是定义在类的方法中的属性,它的特点是:只作用于调用方法的对象。
注意,实例变量只能通过对象名访问,而不能直接通过类名访问。
Python允许通过对象访问类变量,但不能通过对象修改类变量的值。因为,通过对象修改类变量的值,不是给类变量赋值,而是定义一个新的实例变量。
例如如下程序:
类别清单:
#定义两个类变量
Item= mouse
数量=2000
#定义实例方法
定义更改(自身、项目、数量):
#下面的赋值语句没有给类变量赋值,而是定义了新的实例变量。
self.item=项目
self.quantity=数量
#创建库存对象
iv=库存()
四.改变(“显示”,500)
#访问iv的项目和数量实例变量
打印(iv.item) #显示
印刷(四.数量)# 500
#访问库存的项目和数量分类变量
Print(Inventory.item) #鼠标
Print(Inventory.quantity) # 2000在上面的程序中,第8行和第9行通过示例为item和quantity变量赋值。看起来像是给类变量赋值,其实不是。它们的功能是重新定义两个实例变量。
类,实例变量和类变量可以同名,但在这种情况下,类变量不能用类对象调用,因为它会偏向实例变量,这也是不建议用对象名调用类变量的原因。
上面,在调用Inventory对象的change()方法后,程序访问Inventory对象的item和quantity变量。因为对象本身就有这两个实例变量,所以程序会输出对象的实例变量的值;接下来,程序通过Inventory访问它的两个类变量item和quantity,这是对类变量的真正访问。
运行上面程序,将看到如下输出结果:
班长
500
老鼠
2000多是python类变量和实例变量的详细内容。其他相关文章请多关注盛行的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。