导语:
本文主要介绍了关于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。)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何键入python反引号12/02
- ♥ 如何在centos中安装python3?12/29
- ♥ 再推荐一款小众且好用的 Python 爬虫库01/29
- ♥ python析构函数的使用注意事项12/08
- ♥ python中有没有map方法12/07
- ♥ 将元素添加到 Python 列表列表的 3 种方法12/05
内容反馈