On 2007-09-19, Hrvoje Niksic <[EMAIL PROTECTED]> wrote: > Ben Finney <[EMAIL PROTECTED]> writes: > >> Hrvoje Niksic <[EMAIL PROTECTED]> writes: >> >>> class X(Y): >>> def foo(self): >>> super(X, self).foo() >>> >>> ...there is in fact no guarantee that super() calls a superclass of >>> X. However, it is certainly guaranteed that it will call a superclass >>> of type(self). >> >> Not even that. It could call *any class in the inheritance >> hierarchy*, > > The inheritance hierarchiy is populated by the various (direct > and indirect) superclasses of type(self). > >> depending on how the MRO has resolved "next class". Even one that is >> neither an ancestor nor a descendant of X. > > My point exactly. superclass of X is not the same as > superclass of type(self). Super iterates over the latter, > where you expect the former.
I can't blame a person for thinking that the call super(A, self) is taking the superclass of A. A is perhaps too prominently placed. -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list