On Apr 1, 2008, at 6:10 PM, Steve Holden wrote: > Ed is a good enough designer to avoid the corner cases. Strangely > enough > the one place where I have ended up making significant use of super() > was in providing mixins for wxPython interface classes!
Thanks much for the compliment. Yes, wrapping the disparate and confusing wxPython classes to have a consistent interface is where we also make the most use of super(), but our database wrappers also provide consistent functionality to all the dbapi cursors, no matter what the backend database may be. The only reason this works is that we are working with a single known class interface; we control all our own mixin class designs. With the wxPython stuff, each class has a well-defined set of methods and method signatures, and with the database stuff, we only mixin with the dbapi-standard methods, and avoid hooking into module-specific enhancements. My point in these postings is that working with multiple inheritance is fraught with potential pitfalls; super() doesn't create these pitfalls, although it can make it easier to fall into them. If you try to create a PotBelliedElephant class by using MI with a PotBelliedPig class and an Elephant class, well, you *should* crash and burn, whether you use super() or not. http://en.wikipedia.org/wiki/An_Elephant_Makes_Love_to_a_Pig -- Ed Leafe -- http://mail.python.org/mailman/listinfo/python-list