Michael J. Fromberger wrote: > > Is there a better (i.e., more elegant) way to handle the case marked > (**) above? >
You have to call super in each method __init__, if you don't, the call chain break before the end: class A (object): def __init__(self): super(A, self).__init__() print "cons A" class B (object): def __init__(self): super(B, self).__init__() print "cons B" class C (A): def __init__(self): super(C, self).__init__() print "cons C" class D (B): def __init__(self): super(D, self).__init__() print "cons D" class E (C, D): def __init__(self): super(E, self).__init__() # calls C constructor print "cons E" -- http://mail.python.org/mailman/listinfo/python-list