Re: When ‘super’ is not a good id ea

2009-10-08 Thread Jean-Michel Pichavant

alex23 wrote:

Jean-Michel Pichavant jeanmic...@sequans.com wrote:
  

alex23 wrote:


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)



I'm not entirely sure how an opinion + explanation of the underlying
mechanics is more or less correct than a development principle...
  
The correctness applies to my answer, not the super mechanism. The super 
mechanism is correct and properly documented since python 2.6, so anyone 
is free to use it.
I'm just trying to give arguments in favor of using the explicit base 
class name instead of super.


And in my opinion, explicit names are (slightly) better because there's 
no underlying explanation required when using the base class name 
instead of super.


JM
--
http://mail.python.org/mailman/listinfo/python-list


Re: When ‘super’ is not a good id ea

2009-10-07 Thread Jean-Michel Pichavant

alex23 wrote:

Jean-Michel Pichavant jeanmic...@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
--
http://mail.python.org/mailman/listinfo/python-list