Calling __init__ with multiple inheritance

jfj jfj at freemail.gr
Tue Mar 29 14:38:58 EST 2005


Peter Otten wrote:
> 
>>>>Child()
> 
> child
> father
> mother
> parent # <-- parent only once
> <__main__.Child object at 0x402ad38c>
> 

D-uh?

################################################
class Parent(object):
     def __init__(self):
             print "parent"
             super(Parent, self).__init__()

class Father(Parent):
     def __init__(self):
             print "father"
             super(Father, self).__init__()
             print "D-uh"

class Mother(Parent):
     def __init__(self):
             print "mother"
             super(Mother, self).__init__()
             print "D-oh"

class Child(Father, Mother):
     def __init__(self):
             print "child"
             super(Child, self).__init__()

Child()
################################################

This prints
  child
  father
  mother
  parent
  D-oh
  D-uh

Therefore super is a very intelligent function indeed!


jf



More information about the Python-list mailing list