Peter Hansen wrote: > km wrote: > >> Hi all, >> >> In the following code why am i not able to access class A's object >> attribute - 'a' ? I wishto extent class D with all the attributes of >> its base classes. how do i do that ? [snip] > Each class should do a similar super() call, with the appropriate name > substitutions. [snip] > -Peter
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' def foo (self): print 'A.foo' class B (object): def __init__ (self): super (B, self) .__init__ () print 'i am a B' def foo (self): print 'B.foo' class C (A, B): def __init__ (self): super (C, self) .__init__ () print 'i am a C' c = C () c.foo () #--8<--- aerts $ python2.4 inheritance.py i am a B i am an A i am a C A.foo 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): i am an A i am a B i am a C A.foo Thanks -- rafi "Imagination is more important than knowledge." (Albert Einstein) -- http://mail.python.org/mailman/listinfo/python-list