[Python-Dev] New Super PEP
Gustavo Carneiro
gjcarneiro at gmail.com
Sun Apr 29 13:02:23 CEST 2007
On 29/04/07, James Y Knight <foom at fuhm.net> wrote:
>
>
> On Apr 28, 2007, at 10:43 PM, Calvin Spealman wrote:
> > Abstract
> > ========
> >
> > The PEP defines the proposal to enhance the super builtin to work
> > implicitly
> > upon the class within which it is used and upon the instance the
> > current
> > function was called on. The premise of the new super usage
> > suggested is as
> > follows:
> >
> > super.foo(1, 2)
> >
> > to replace the old:
> >
> > super(Foo, self).foo(1, 2)
> >
> >
> > Rationale
> > =========
> >
> > The current usage of super requires an explicit passing of both the
> > class and
> > instance it must operate from, requiring a breaking of the DRY
> > (Don't Repeat
> > Yourself) rule. This hinders any change in class name, and is often
> > considered
> > a wart by many.
>
> This is only a halfway fix to DRY, and it really only fixes the less
> important half. The important problem with super is that it
> encourages people to write incorrect code by requiring that you
> explicitly specify an argument list.
Since calling super with any
> arguments other than the exact same arguments you have received is
> nearly always wrong,
Erm. Excuse me, but are you saying this code is wrong?
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
class Square:
def __init__(self, side):
Rectangle.__init__(self, side, side)
Or are you even saying this type of code is rare? I would disagree with
both statements, therefore I also disagree with your recommendation.
--
Gustavo J. A. M. Carneiro
"The universe is always one step beyond logic." -- Frank Herbert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20070429/5419126b/attachment.html
More information about the Python-Dev
mailing list