python中类的属性(用property绑定此属性)难以理解的现象
时间:2010-11-05
来源:互联网
刚开始学习python,有很多不懂的地方,请大家指教一下
复制代码
以下是我的理解,不知道对不对,请大家指正:
1:以上的输出结果可以认为b1和b2两个实例都拥有X属性,但是不同的实例的X属性是各自独立互不相干的.
然而接着上面的代码,继续下面的代码
复制代码
2:这次输出的结果表明 类B的X属性与实例的X属性是指向同一个引用,是否可以认为X属性是类的静态属性?
对于第2这次的输出结果我糊涂了,如果第二个观点成立,那么不同的实例的X属性其实就是指向的同一个引用,而这明显和第一个观点产生了矛盾.
不知道大家是如何解释上述两个现象?
- class B(object):
- def __init__(self,x):
- self.x=x
-
- def get_XX(self):
- return self.x
-
- def set_XX(self,value):
- self.x=value
-
- X=property(get_XX,set_XX)
-
-
- b1=B(10)
- b2=B(20)
- print(b1.X) #输出的是10
- print(b2.X) #输出的是20
-
- b1.X=11
- b2.X=21
- print(b1.X) #输出的是11
- print(b2.X) #输出的是21
1:以上的输出结果可以认为b1和b2两个实例都拥有X属性,但是不同的实例的X属性是各自独立互不相干的.
然而接着上面的代码,继续下面的代码
- B.X=-100
- print(b1.X) #输出的是-100
- print(b2.X) #输出的是-100
对于第2这次的输出结果我糊涂了,如果第二个观点成立,那么不同的实例的X属性其实就是指向的同一个引用,而这明显和第一个观点产生了矛盾.
不知道大家是如何解释上述两个现象?
作者: Dic4000 发布时间: 2010-11-05
这个应该跟python中对象属性的寻值方式有关, 一般是先检索类属性,如果类属性中没有该变量, 就继续在object属性中检索.
B.X=-100
相当于为类B添加了一个类属性X,所以后来b1.X=b2.X=B.X.
B.X=-100
相当于为类B添加了一个类属性X,所以后来b1.X=b2.X=B.X.
作者: mhan11 发布时间: 2010-11-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28