【发布时间】:2016-12-16 21:26:48
【问题描述】:
我有一段python代码:
class A(object):
args = [1,2]
def __init__(self):
print self.args
class B(A):
args = [3,4]
def __init__(self):
super(B, self).__init__()
print self.args
B()
输出是:
[3, 4]
[3, 4]
而不是
[1,2]
[3,4]
为什么从派生类调用基类的构造函数时,使用的类属性来自派生类的命名空间?有没有办法让我使用函数所在类的类属性?
【问题讨论】:
-
self.attribute首先查看对象的“直接”属性,然后遍历继承链直到找到该属性。当您执行self.args时,它首先“查看自我”,然后查看 B 并找到属性。
标签: python class inheritance class-attributes