rafi wrote: > A related question is about the order of the __init__ calls. Considering > the following sample: > > #--8<--- > class A (object): > def __init__ (self): > super (A, self) .__init__ () > print 'i am an A' > class B (object): > def __init__ (self): > super (B, self) .__init__ () > print 'i am a B' > class C (A, B): > def __init__ (self): > super (C, self) .__init__ () > print 'i am a C' > c = C () > > aerts $ python2.4 inheritance.py > i am a B > i am an A > i am a C > > I do understand the lookup for foo: foo is provided by both classes A > and B and I do not state which one I want to use, so it takes the first > one in the list of inherited classes (order of the declaration). However > I cannot find an explanation (I may have googled the wrong keywords) for > the order of the __init__ calls from C. I was expecting (following the > same order as the method lookup):
This should make it clear: class A (object): def __init__ (self): print '<A>', super (A, self) .__init__ () print '</A>' class B (object): def __init__ (self): print '<B>', super (B, self) .__init__ () print '</B>' class C (A, B): def __init__ (self): print '<C>', super (C, self) .__init__ () print '</C>' C() --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list