Python:';超级';对象没有属性';属性名称';
我试图从基类访问一个变量。下面是父类:Python:';超级';对象没有属性';属性名称';,python,attributes,super,Python,Attributes,Super,我试图从基类访问一个变量。下面是父类: 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_
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'
回溯(最近一次呼叫最后一次):
文件“test.py”,第13行,在
目标剂量法()
文件“test.py”,第10行,在doSomething中
父变量=超级(子变量,自变量)
AttributeError:“super”对象没有属性“some\u var”
我做错了什么?在Python中,从基类访问变量的推荐方法是什么?基类运行
\uuuu init\uuuu
后,派生对象在那里设置了属性(例如some\u var
),因为它与派生类中的self
是同一个对象。你可以而且应该在任何地方使用self.some\u varsuper
用于访问基类中的内容,但实例变量(顾名思义)是实例的一部分,而不是该实例类的一部分。父类中不存在属性some\u var
当您在\uuuu init\uuuu
期间设置它时,它是在子类的实例中创建的