【发布时间】:2012-05-03 08:38:03
【问题描述】:
我有以下基类和子类:
class Event(object):
def __init__(self, sr1=None, foobar=None):
self.sr1 = sr1
self.foobar = foobar
self.state = STATE_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
在我的代码中,我正在检查 TypeTwoEvent 类的实例,检查我知道基类中存在的字段 - 我希望它默认为值 None。但是,我的代码引发了以下异常:
AttributeError: 'TypeTwoEvent' 对象没有属性 'foobar'
我的印象是基类字段将由子类继承,并且创建子类的实例将实例化基类(并因此调用其构造函数)...
我在这里缺少什么?为什么TypeTwoEvent 没有foobar 属性 - 当派生它的基类具有foobar 属性时?
【问题讨论】:
-
如下所述,您需要明确指出您希望超类也初始化。但是小心:如果您有任何多重继承,那么实现这一点就变得非常微妙。
标签: python inheritance class-attributes