[Python-Dev] Problems with the new super()

Jared Flatow jflatow at northwestern.edu
Fri May 2 05:46:51 CEST 2008


On May 1, 2008, at 9:21 PM, Greg Ewing wrote:

> If the classes being mixed clash or overlap in functionality
> somehow, the inheriting class needs to override all of the
> clashing methods and properties and resolve matters by
> delegating to one or another of the inherited classes
> (using explicit inherited method calls, not super!).

Sorry but thats just not fair. It's not about convenience for the  
classes you're inheriting from, its so the inheriting class and  
superclasses can cooperate without requiring implementation details of  
one another. I agree that if your methods are 'clashing' then you are  
probably misinheriting, but cooperative methods can be the most  
natural way to model certain situations. Not to be dull but when  
building up a method from smaller reusable bits of functionality this  
is the case. Once you have explicitly stated the classes you want to  
inherit from, it isn't magic to expect some of their methods to chain  
without explicitly restating how exactly they should do that. In fact,  
doing so may make you more likely to make an error when you change  
which bits you want to include. If the method resolution order is  
there (and explicit somewhere) you might as well make use of it.

> If it's not feasible to do that for some reason, then
> you're better off forgetting about multiple inheritance
> and finding some other solution to the problem.

Is it an issue of feasibility, or of what is the 'most obvious'  
solution?

jared


More information about the Python-Dev mailing list