python是否可以不定义就使用一个变量,不能作为Python变量的是
不正确的使用类变量
请看下面的例子:
类别a(对象):
.x=1
.
B(A)类:
.及格
.
丙类(甲):
.及格
.
printA.x,B.x,C.x
11相关推荐:《Python视频教程》
好像没什么问题。
B.x=2
printA.x,B.x,C.x
21嗯嗯,还是和预想的一样。
A.x=3
printA.x,B.x,C.x
33.神圣的狗屎。它只是改变了A.X .为什么C.X .也改变了?
在Python中,类变量通常在内部被视为字典,并遵循所谓的方法解析顺序(MRO)。所以在上面的代码中,因为属性X在C类中找不到,所以会在它的基类中查找(上面的例子中只有A类,当然Python支持多重继承)。换句话说,C没有独立于a的自己的属性X,因此,对C.x的引用实际上是对A.X的引用(B.x不是对A.x的引用,因为B.x=2是指第二步中的对象2。如果不是,B.x还是指a.x .)
相关建议:
Python新手常见问题1:误用表达式
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。