class super method

Ed Leafe ed at leafe.com
Wed Apr 2 03:44:45 CEST 2008


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






More information about the Python-list mailing list