Woah. Either you're leaving out essential info, or python got a lot more complicated.
Firstly, super returns all base classes. How? Does it return a tuple of them, or a container object, or is this something horribly worse such as syntactic sugar? It doesn't make sense for it to return a tuple, then super().__init__ would call the init method of the tuple, not each class, so then syntactic sugar would have to be involved. I doubt that.. A container object could use __getattr__ to magically call each of the __init__ methods of the contained class references. The most logical is the container object. But that leaves things open for duplicate calls to __init__ So the container would have to keep track of the base classes it has already called... which might be the ordered list __mro__, but those are class specific, not global, so each super class would not know if an __init__ has been called or not... But then again, you would need duplicate calls because each level of super would need different initiation. I apologize. Would you care to explain this a little more technically? Specific and accurate are better than translated into layman's terms. I've been with python for a while now. thanks. >Actually, super returns all base classes, all in it's own time. > >Basically, every class has a member __mro__, that contains a >consistently ordered list of classes. > >super needs the class from where it is being called to locate the right >place in the __mro__ and to hand you a wrapper around self for the next >base class in this list. > >This way, if all classes use super, they can cooperativly call all >implementations of a given method. > >That's the theory. In practice there are a number of pitfalls which >makes super problematic. ;) > >Andreas _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor