知行编程网知行编程网  2022-12-29 00:00 知行编程网 隐藏边栏  6 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python新手常见问题二:不正确的使用类变量的相关知识,希望可以帮到处于编程学习途中的小伙伴


Python新手FAQ 2:类变量的错误使用


不正确的使用类变量

看下面一个例子:

>>> 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。)

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享