The subclass should be:
class TypeTwoEvent(Event):
def __init__(self, level=None, *args, **kwargs):
super().__init__(*args, **kwargs)
self.sr1 = level
Because __init__
is overridden, the base class’ __init__
code will only run if it is explicitly requested.
Despite its strange name, __init__
is not specially treated. It gets called automatically after the object is created; but otherwise it’s an ordinary method, and ordinary inheritance rules apply.
super().__init__(arguments, that, go, to, parents)
is the syntax to call the parent version of the method. Using *args
and **kwargs
allows us to catch additional arguments passed to __init__
and pass them to the parent method; this way, when a TypeTwoEvent
is created, a value can be specified for the foobar
, along with anything else specific to the base class.