Python学习26:类属性vs实例属性
来源:互联网 发布:淘宝客自动采集推广 编辑:程序博客网 时间:2024/06/07 07:01
类属性访问(只能通过"类.属性"的方式修改类的属性)
类属性可以通过类或者实例来访问。
#FileName : classAvr.py#定义一个普通类,测试类属性class C(object): fooc = 100 #构建一个实例c = C()print('类属性:C.fooc = ',C.fooc) #foo = 100print('通过对象实例测试属性c.fooc = ',c.fooc) #foo = 100print(id(C.fooc),' ',id(c.fooc))#通过实例修改属性(会创建一个实例属性fooc,因为任何对实例属性的赋值都会创建一个实例属性(如果不存在),这个实例属性会屏蔽对类属性的访问)c.fooc = 2000#再次打印类属性print('类属性:C.fooc = ',C.fooc) #foo = 100print('通过对象实例测试属性c.fooc = ',c.fooc) #foo = 2000print(id(C.fooc),' ',id(c.fooc))del c.foocprint('类属性:C.fooc = ',C.fooc) #foo = 100print('通过对象实例测试属性c.fooc = ',c.fooc) #foo = 100
我们只有使用引用fooc的时候,才能更新它的值,如C.fooc.
通过实例c.fooc更新类类属性(不可以),实例会创建一个实例属性fooc。这个实例属性会屏蔽类属性。只有实例属性被清除之后,才能通过实例查看类属性
类属性可变的情况(类属性为:字典、列表、集合的情况)可以通过实例修改类型属性
#定义另一个普通类,测试类属性class B(object): ls = ['Hello','Python','World'] #构建对象实例b = B()#打印属性print('B.ls = ',B.ls) #['Hello', 'Python', 'World']print('b.ls = ',b.ls) #['Hello', 'Python', 'World']#通过对象实例删除ls中的一项b.ls.pop(1)print('B.ls = ',B.ls) #['Hello', 'World']print('b.ls = ',b.ls) #['Hello', 'World']#定义一个类用于测试类属性为集合的情况class A(object): s = set('Hello')#构建实例a = A()print(a.s)#通过实例更新类属性a.s.add('aaa')print(A.s)
python中的类属性只是存储与类相关的数据,和该类的实例无关。类属性和java中的静态成员变量类似。访问python的类属性可使用类名+“.”+属性名的方式,
如果类的实例没有同名变量也可以使用实例来访问。如果实例含有与类属性同名的属性,则用该实例访问属性时,访问的是实例中的属性。
0 0
- Python学习26:类属性vs实例属性
- Python 实例属性VS类属性1
- Python类属性,实例属性
- python学习——实例属性和类属性
- Python学习笔记——类属性和实例属性
- python学习——类属性与实例属性
- python 实例属性和类属性
- python的类属性和实例属性
- [Python]类属性与实例属性
- python的类属性和实例属性
- Python——类属性/实例属性
- python 的 类属性 与 实例属性
- python的类属性和实例属性
- python 类属性和实例属性
- python中的类属性和实例属性
- Python——类属性/实例属性
- Python——类属性/实例属性
- python的类属性和实例属性
- 回顾:1.htm中get和post请求方法的区别
- bootstrap学习——javascript插件篇
- A+B for Input-Output Practice (IV)
- 蓝牙用例
- 应用服务器-tomcat内存设置问题
- Python学习26:类属性vs实例属性
- How many Fibs?(高精度)
- C/C++回调函数
- 聘请的Java开发人员利用Java程序设计需求
- 1124:成语接龙 dfs+一维数组保存结果
- 鹰目LED联播网全线出击 助您“屏”地而起
- Hibernate继承映射
- 导弹拦截系统
- SSH整合中 hibernate整合操作