Suppose I have a Base class and a Child class that inherits from Base. What is the right way to call the constructor of base class from a child class in Python? Do I use super?
Here is an example of what I have so far:
class Base(object):
def __init__(self, value):
self.value = value
...
class Child(Base):
def __init__(self, something_else):
super(Child, self).__init__(value=20)
self.something_else = something_else
...
Is this correct?
Thanks, Boda Cydo.
That is correct. Note that you can also call the
__init__method directly on theBaseclass, like so:That’s the way I generally do it. But it’s discouraged, because it doesn’t behave very well in the presence of multiple inheritance. Of course, multiple inheritance has all sorts of odd effects of its own, and so I avoid it like the plague.
In general, if the classes you’re inheriting from use
super, you need to as well.