pythonoopinheritancein-class-initialization

python __init__ method in inherited class


I would like to give a daughter class some extra attributes without having to explicitly call a new method. So is there a way of giving the inherited class an __init__ type method which does not override the __init__ method of the parent class?

I have written the code below purely to illustrate my question (hence the poor naming of attributes etc).

class initialclass():
    def __init__(self):
        self.attr1 = 'one'
        self.attr2 = 'two'    

class inheritedclass(initialclass):
    def __new__(self):
        self.attr3 = 'three'

    def somemethod(self):
        print 'the method'


a = inheritedclass()

for each in a.__dict__:
    print each

#I would like the output to be:
attr1
attr2
attr3

Thank you


Solution

  • As far as I know that's not possible, however you can call the init method of the superclass, like this:

    class inheritedclass(initialclass):
        def __init__(self):
            initialclass.__init__(self)
            self.attr3 = 'three'