新闻动态

python3中类的重点与难点:类属性和实例属性的区别说明

发布日期:2022-03-25 09:22 | 文章来源:源码中国

先看图理解:

类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。

类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问

类属性

class People(object):
 name = 'Tom'  #公有的类属性
 __age = 12  #私有的类属性
 
p = People() 
print(p.name)  #正确
print(People.name)#正确
print(p.__age)#错误,不能在类外通过实例对象访问私有的类属性
print(People.__age)  #错误,不能在类外通过类对象访问私有的类属性

实例属性(对象属性)

class People(object):
 address = '山东' #类属性
 def __init__(self):
  self.name = 'xiaowang' #实例属性
  self.age = 20 #实例属性
 
p = People()
p.age =12 #实例属性
print(p.address) #正确
print(p.name) #正确
print(p.age)  #正确
 
print(People.address) #正确
print(People.name) #错误
print(People.age)  #错误

通过实例(对象)去修改类属性

class People(object):
 country = 'china' #类属性
print(People.country)
p = People()
print(p.country)
p.country = 'japan' 
print(p.country)#实例属性会屏蔽掉同名的类属性
print(People.country)
del p.country #删除实例属性
print(p.country)

总结

如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。

Python:类属性和实例属性总结

#类属性:类对象所拥有的的属性,它被所有类对象的实例对象共有,类对象和实例对象可以访问
#实例属性:实例对象所拥有的属性,只能通过实例对象访问
class Student:
 name='李明'  #类属性
 def __init__(self,age):
  self.age=age  #实例属性
  pass
 pass
Student.name='邓超'#通过类对象去修改类属性  因为name属于类属性
print('-----------李明的数据------------------')
lm=Student(18)#实例化对象,并传入参数
print(lm.age) #通过实例对象去访问实例属性
print(lm.name) #通过实例对象去访问类属性
# lm.name='华晨宇'  #不能通过实例对象对类属性进行修改
print(lm.name)
print('--------------张三的数据--------------')
zs=Student(20)
print(zs.age)
print(zs.name)
print('------------通过类对象Student去访问name----------------')
print(Student.name)
# print(Student.age)注:不能通过类对象去访问实例属性

运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

海外稳定服务器

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部