When ‘super’ is not a good idea

Jean-Michel Pichavant jeanmichel at sequans.com
Wed Oct 7 10:11:48 EDT 2009


alex23 wrote:
> Jean-Michel Pichavant <jeanmic... at sequans.com> wrote:
>   
>> a possible answer:
>> - explicit >> implicit
>>
>> I'm not sure this is the correct one though :)
>>     
>
> To me, the explicit reference to the base class violates DRY. It also
> means you need to manually change all such references should the base
> class ever change, something that using super() avoids.
>   
I found the correct answer 
(http://www.artima.com/weblogs/viewpost.jsp?thread=236275)

" super is perhaps the trickiest Python construct: this series aims to 
unveil its secrets"

"Having established that super cannot return the mythical superclass, we 
may ask ourselves what the hell it is returning ;) The truth is that 
super returns proxy objects.Informally speaking, a proxy is an object 
with the ability to dispatch to methods of other objects via delegation. 
Technically, super is a class overriding the __getattribute__ method. 
Instances of super are proxy objects providing access to the methods in 
the MRO."


Jean-Michel



More information about the Python-list mailing list