I have this base class and subclass:
class Event:
def __init__(self, sr1=None, foobar=None):
self.sr1 = sr1
self.foobar = foobar
# Event class wrappers to provide syntatic sugar
class TypeTwoEvent(Event):
def __init__(self, level=None):
self.sr1 = level
Later on, when I try to check the foobar
attribute of a TypeTwoEvent
instance, I get an exception. For example, testing this at the REPL:
>>> event = TypeTwoEvent()
>>> event.foobar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'TypeTwoEvent' object has no attribute 'foobar'
I thought that the base class attributes would be inherited by the subclass and that creating an instance of a subclass would instantiate the base class (and thus invoke its constructor). Therefore, I expected the foobar
attribute value to be defaulted to None
.
Why do TypeTwoEvent
instances not have a foobar
attribute, even though Event
instances do?