导语:
本文主要介绍了关于Python新手常见问题二:不正确的使用类变量的相关知识,希望可以帮到处于编程学习途中的小伙伴
不正确的使用类变量
看下面一个例子:
>>> class A(object):
... x = 1
...
>>> class B(A):
... pass
...
>>> class C(A):
... pass
...
>>> print A.x, B.x, C.x
1 1 1
看起来没有问题。
>>> 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 中,类变量通常在内部被视为字典,并遵循通常所说的方法解析顺序 (MRO)。所以在上面的代码中,因为在C类中找不到属性x,所以会去查找它的基类(上面的例子中只有A类,当然Python是支持多重继承的)。换句话说,C 没有独立于 A 的属性 x。因此,对 C.x 的引用实际上是对 A.x 的引用。 (B.x 不是对 A.x 的引用,因为 B.x=2 在第二步中将 B.x 引用到对象 2。如果不是,B.x 仍然引用 A.x。)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python3.7如何验证登录是否成功?11/20
- ♥ python matlab库的用途是什么?11/17
- ♥ 什么类型的python对象是08/24
- ♥ python如何判断一个字符是否是汉字?09/04
- ♥ python是如何实现重写的01/06
- ♥ Python使用Plotly实现动画设计12/19
内容反馈