我正在尝试从基类访问一个变量。这是父类:
class Parent(object):
def __init__(self, value):
self.some_var = value
这是子类:
class Child(Parent):
def __init__(self, value):
super(Child, self).__init__(value)
def doSomething(self):
parent_var = super(Child, self).some_var
现在,如果我尝试运行这段代码:
obj = Child(123)
obj.doSomething()
我得到以下异常:
Traceback (most recent call last):
File "test.py", line 13, in <module>
obj.doSomething()
File "test.py", line 10, in doSomething
parent_var = super(Child, self).some_var
AttributeError: 'super' object has no attribute 'some_var'
我做错了什么?在 Python 中从基类访问变量的推荐方法是什么?
最佳答案
在基类的__init__
之后跑了,派生对象在那里设置了属性(例如 some_var
),因为它与 self
是完全相同的对象在派生类中'__init__
.你可以而且应该只使用 self.some_var
到处。 super
用于从基类访问内容,但实例变量(如名称所示)是实例的一部分,而不是该实例类的一部分。
关于Python: 'super' 对象没有属性 'attribute_name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075758/