python3中类的重点与难点:类属性和实例属性的区别说明
先看图理解:
类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。
类属性就是类对象(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) 注:不能通过类对象去访问实例属性
运行结果
(资源库 www.zyku.net)
原文链接:https://blog.csdn.net/qq_41020281/article/details/79633603
上一篇:python基础学习之组织文件
栏 目:Python教程
下一篇:教你用Python3+mysql8.0搭建Django框架
本文标题:python3中类的重点与难点:类属性和实例属性的区别说明
本文地址:https://www.zyku.net/python/9896.html
您可能感兴趣的文章
- 02-08关于python3安装pip及requests库的导入问题
- 02-08Python3基础语法知识点总结
- 02-08python3.7.2 tkinter entry框限定输入数字的操作
- 01-25OpenCV3.3+Python3.6实现图片高斯模糊
- 01-25Python3 如何开启自带http服务
- 04-08python3使用diagrams绘制架构图的步骤
- 04-08python3 删除所有自定义变量的操作
- 09-07Python2与Python3关于字符串编码处理的差别总结
- 01-12Meitu Me-Meitu Me应用软件功能介绍
- 03-15Sublime Text 3的Less2Css插件介绍与
- 01-11元和堂药业-元和堂药业应用软件功能介
- 08-15vsCode字母排序方法介绍
- 02-23一加9r启动双wifi网络加速方法
- 11-23CentOS关机与重启命令详解
- 12-06苹果13如何开启APP信任授权
- 01-12Navicat连接Sqlite数据库教程
- 09-22抖音头像挂件设置方法汇总
- 09-20闽政通怎么打不开崩了
- 12-25扫描OCR文字识别-扫描OCR文字识别应用
- 01-143D图纸通-3D图纸通应用软件功能介绍
最近更新
阅读排行
猜你喜欢
- 09-11iQOO8Pro语言设置步骤分享
- 09-22微信怎么屏蔽腾讯惠聚程序
- 03-21realmev15单手模式开启教程
- 07-05Linux httpd命令
- 01-03九宫格分图大师-九宫格分图大师应用软
- 02-23织梦{dede:field name='array' }标签的
- 03-11帝国CMS灵动标签排序写法
- 10-08一加9rt双开应用步骤介绍
- 03-07wordpress发布文章后自动同步图文到新
- 03-16荣耀50se杂志锁屏设置方法