Python 实例属性VS类属性1
来源:互联网 发布:xtw100编程器使用说明 编辑:程序博客网 时间:2024/06/11 17:54
# -*- coding:utf-8 -*-import osclass test: data=1 def __init__(self): self.a1=0 def test2(self): print 'hello' #类中定义了类类型的变量data,下面我们创建对象t,t1,进行逐步分析,对比if __name__=='__main__': t=test() t1=test() #1、看看有啥现象 print 'class test.data',test.data print 'class id of address', id(test.data) print '-'*10 print 'object t.data', t.data print 'Object id of address', id(t.data) print '-'*10 print 'object t1.data', t1.data print 'Object id of address', id(t1.data) print '\n' #结果如下: #class test.data 1 #class id of address 19584776 #---------- #object t.data 1 #Object id of address 19584776 #---------- #object t1.data 1 #Object id of address 19584776 #从结果分析看,创建对象,都会引用类属性data属性,而不是copy此属性。 #通过类名和对象t,对象t1的data值和地址都是一样,引用对象1 #2、通过对象t修改data属性 t.data=2 print 'Change t.data=2' print 'class test.data',test.data print 'class id of address', id(test.data) print '-'*10 print 'object t.data', t.data print 'Object id of address', id(t.data) print '-'*10 print 'object t1.data', t1.data print 'Object id of address', id(t1.data) print '\n' #本次运行结果如下: #Change t.data=2 #class test.data 1 #class id of address 19584776 #---------- #object t.data 2 #Object id of address 19584764 #---------- #object t1.data 1 #Object id of address 19584776 #从结果分析看,只有对象t的data属性发生了变化,因为设置或者更新类属性时候,会创建实例属性t.data. #类属性data属性和类t1 data属性都没变化。 #3、通过类test修改data属性 test.data=10 print 'Change test.data=10' print 'class test.data',test.data print 'class id of address', id(test.data) print '-'*10 print 'object t.data', t.data print 'Object id of address', id(t.data) print '-'*10 print 'object t1.data', t1.data print 'Object id of address', id(t1.data) print '\n' #本次运行结果如下: #Change test.data=10 #class test.data 10 #class id of address 19584668 #---------- #object t.data 2 #Object id of address 19584764 #---------- #object t1.data 10 #Object id of address 19584668 #从结果分析看,修改类的属性,会影响对象中没有修改data属性的对象,如对象t1 #对对象t不影响,t已修改过data属性值。 #4、删除对象的类属性(该属性为常量) print t.data del t.data print t.data print test.data print t1.data print '\n' #2,先访问到了对象的data属性,类的data属性被遮住了 #10 #10 #10 #第二次删除会报错 print t.data #del t.data print t.data #5、可通过__class__ 属性,修改所有的值 print 'Change t.__class__.data=2' t.__class__.data= 2 print 'class test.data',test.data print 'Object t.data', t.data print 'Object t1.data', t1.data #结果如下: #Change t.__class__.data=2 #class test.data 2 #Object t.data 2 #Object t1.data 2 #总结: #1、修改对象的类属性值,不会影响类的类属性值。 #2、通过对象设置类的属性,会创建该对象的此属性 #2、修改类的属性值,会影响类属性没有变化的对象。 #3、删除已设置对象的类属性值,不会影响类的该属性
1 0
- Python 实例属性VS类属性1
- Python学习26:类属性vs实例属性
- Python类属性,实例属性
- python 实例属性和类属性
- python的类属性和实例属性
- [Python]类属性与实例属性
- python的类属性和实例属性
- Python——类属性/实例属性
- python 的 类属性 与 实例属性
- python的类属性和实例属性
- python 类属性和实例属性
- python中的类属性和实例属性
- Python——类属性/实例属性
- Python——类属性/实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- Python Class的实例属性/类属性
- Python类属性和实例属性
- github使用(通过webstorm创建一个nodejs项目的本地git库,推送到github进行管理,(ssh密钥无用户密码方式))
- 自考总结
- 初识IntelliJ IDEA下JUnit单元测试
- CSS设置滚动条
- matlab调用VS生成的DLL
- Python 实例属性VS类属性1
- LightOJ 1028 Trailing Zeroes (I)
- Java自带的XML解析
- uboot——ping通开发板
- Lazy singleton中的double check
- 从圈内到圈外再到圈内
- CSS的滤镜
- 站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码
- LightOJ 1026 Critical Links 求桥