[Python-ideas] Fwd: Re: simpler super() syntax
Arne Babenhauserheide
arne_bab at web.de
Mon Apr 7 22:49:54 CEST 2008
--- this message got only to Guido by error - I only now found out, so I
forwarded it here. ---
(a) Great!
(b) I though about this a lot, but only two weeks ago I realized, why my idea
was moot. It just took a bit of time.
The reason is simple (though it took me quite some time to find it):
There are times, where I might want to put an additional argument between the
*args and the **kwds.
class A():
def __init__(a, b, c=d):
pass
class B(A):
def __init__(a, c=d):
super().__init__(*args, b, **kwds)
So the way Python does it is the simplest possibility, which doesn't cripple
the language on the long run.
And that's a nice result, too :)
Thank you for answering, even though my idea was flawed.
Best wishes,
Arne
El Friday, 22 de February de 2008 17:12:31 escribió:
> (a) In Py3k, you will be able to use super() itself without args, e.g.
> super().__init__(*args)
>
> (b) There are lots of reasons why you would not want to pass the args
> to your super method *unchanged*. Also, super methods may have
> defaults for all args. So super.__init__() would be ambiguous -- does
> he want to pass all args or none?
>
> Because of this I am strongly against this.
>
> On Fri, Feb 22, 2008 at 12:53 AM, Arne Babenhauserheide <arne_bab at web.de>
wrote:
> > Hi,
> >
> > I just spent some time figuring out how and why super needs to be called
> > with *args and **kwds in any class, when I use multiple inheritance (or
> > when some subclass wants to use it), and I got the impression, that
> > simply every class should take *args and **kwds and that super should be
> > called inside the init of every class.
> >
> > Would it make sense to make the init of any class take *args and **kwds
> > implicitely?
> >
> > With that, arguments and keywords would always be passed on (the
> > behaviour we need as soon as we use any multiple inheritance) and the
> > code would look cleaner (I think).
> >
> >
> > At the moment the code for a class with MI looks like this:
> >
> > class Blah(Blubb):
> > def __init__(*args, **kwds)
> > super(Blah, self).__init__(*args, **kwds)
> >
> > with implicit *args and **kwds, it would look like this:
> >
> > class Blah(Blubb):
> > def __init__()
> > super(Blah, self).__init__()
> >
> > And by calling super, I implicitely say, that i want to pass on any
> > leftover args or kwds which (to my knowledge) I must do anyway, since
> > else I am in danger of getting MI bugs.
> >
> > What do you think?
> >
> > Best wishes,
> > Arne
> > --
> > Unpolitisch sein
> > Heißt politisch sein
> > Ohne es zu merken.
> > - Arne Babenhauserheide ( http://draketo.de )
> > -- Weblog: http://blog.draketo.de
> >
> > -- Mein öffentlicher Schlüssel (PGP/GnuPG):
> > http://draketo.de/inhalt/ich/pubkey.txt
> >
> > _______________________________________________
> > Python-ideas mailing list
> > Python-ideas at python.org
> > http://mail.python.org/mailman/listinfo/python-ideas
--
Unpolitisch sein
Heißt politisch sein
Ohne es zu merken.
- Arne Babenhauserheide ( http://draketo.de )
-- Weblog: http://blog.draketo.de
-- Mein öffentlicher Schlüssel (PGP/GnuPG):
http://draketo.de/inhalt/ich/pubkey.txt
-------------------------------------------------------
--
Unpolitisch sein
Heißt politisch sein
Ohne es zu merken.
- Arne Babenhauserheide ( http://draketo.de )
-- Weblog: http://blog.draketo.de
-- Mein öffentlicher Schlüssel (PGP/GnuPG):
http://draketo.de/inhalt/ich/pubkey.txt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20080407/280e1b74/attachment.pgp>
More information about the Python-ideas
mailing list