Python新手常见问题二 不正确的使用类变量
【摘要】不正确的使用类变量看下面一个例子:>>>classA(object): x=1 >>>classB(A): pass >>>classC(A): pass >>>printA x,B
不正确的使用类变量
看下面一个例子:
>>> class A(object):
... x = 1
...
>>> class B(A):
... pass
...
>>> class C(A):
... pass
...
>>> print A.x, B.x, C.x
1 1 1
相关推荐:《Python视频教程》
看起来没有问题。
>>> B.x = 2
>>> print A.x, B.x, C.x
1 2 1
嗯哈,还是和预想的一样。
>>> A.x = 3
>>> print A.x, B.x, C.x
3 2 3
我了个去。只是改变了A.x,为啥C.x也变了?
在Python里,类变量通常在内部被当做字典来处理并遵循通常所说的方法解析顺序(Method Resolution Order (MRO))。因此在上面的代码中,因为属性x在类C中找不到,因此它会往上去它的基类中查找(在上面的例子中只有A这个类,当然Python是支持多重继承(multiple inheritance)的)。换句话说,C没有它自己独立于A的属性x。因此对C.x的引用实际上是对A.x的引用。(B.x不是对A.x的引用是因为在第二步里B.x=2将B.x引用到了2这个对象上,倘若没有如此,B.x仍然是引用到A.x上的。)
相关推荐:
python新手常见问题一:乱用表达式
上一篇:python入门基础教程
下一篇:python新手常见问题一 乱用表达式
就业培训申请领取
环球青藤
官方QQ群扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群
Python编程相关文章推荐
|Python编程最新文章推荐
最新文章
Python编程各地入口
环球青藤官方微信服务平台
刷题看课 APP下载
免费直播 一键购课
代报名等人工服务
Python编程热点排行