我有以下基类和亚类:Python类继承:AttributeError的:“[子类]”对象没有属性“XXX”
class Event(object):
def __init__(self, sr1=None, nr1=None, foo=None, foobar=None, nr2=None, sr2=None, flag = False):
self.sr1 = sr1
self.nr1 = nr1
self.foo = foo
self.foobar = foobar
self.nr2 = nr2
self.sr2 = sr2
self.flag = flag
self.state = STATE_NON_EVENT
def state_name(self):
return STATE_NAMES[self.state]
def __repr__(self):
return 'Non event'
# Event class wrappers to provide syntatic sugar
class TypeTwoEvent(Event):
def __init__(self, level=None):
self.sr1 = level
self.state = STATE_EVENT_TWO
def __repr__(self):
return "Type Two event (Level @: {0:.2f})".format(self.sr1)
在我的代码
此外起,我要检查的一个实例TypeTwoEvent类,检查我知道的基类中存在的字段 - 我预计它默认值为None。然而,我的代码引发以下异常:
AttributeError: 'TypeTwoEvent' object has no attribute 'foobar'
我的印象是,基类的字段将由子类和创建一个子类的实例,将实例的基类继承下(因此调用它的构造函数)...
我在这里错过了什么?为什么TypeTwoEvent不具有foobar属性 - 当派生它的基类具有foobar属性时?
如下所述,您需要明确指出您还希望超类初始化。但是__ take care__:如果你有多重继承,那么做到这一点变得非常微妙。 – katrielalex 2012-04-22 14:12:55