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

Barry Warsaw barry at python.org
Fri May 2 01:45:46 CEST 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On May 1, 2008, at 6:33 PM, Andrew McNabb wrote:

> On Thu, May 01, 2008 at 12:55:22PM -0700, Guido van Rossum wrote:
>>
>> I'm not proud of this, but I don't see a way around it. The
>> alternative would be to make it a keyword, which seemed excessive
>> (plus, it would be odd if super() were a keyword when self is not).
>> There were long discussions about various possible ways to implement
>> something like this, and they all had their downsides. (The PEP still
>> isn't fixed to describe the status quo.)
>
> I remember some brainstorms about treating more like self.  I'm not  
> sure
> if these were thought through all the way, but I remember seeing
> something like:
>
> class MyClass(Super1, Super2):
>    # This method requires super:
>    @requires_super
>    def __init__(self, super, **kwds):
>        super(**kwds)
>
>    # This method doesn't require super:
>    def some_method(self):
>        pass
>
> I'm sure there are drawbacks, but it fits in my head.  Using super in
> Python 2.0 is verbose but simple.  However, I'm a little scared of  
> super
> in Python 3.0.  I guess I'm probably just a wimp.

It certainly makes me uncomfortable too.  I think of all the  
alternatives in PEP 3135, I'd probably prefer self.__super__.foo(),  
except that I'd call it self.super.foo().

Although I don't mind reserving a non-underscore-adorned name for  
Python 3.0, I could see adopting self.__super__ and using  
super(self).foo() as a shortcut.  To me, that addresses the main  
rationale of the PEP without the magic (i.e. no need to repeat the  
class).

- -Barry

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iQCVAwUBSBpWLHEjvBPtnXfVAQJmOAP+NW1tj67Ls+m6PCbF9wYpPRQhT2RJ1210
0QdYxyYz8akY5+I1QJTp3BN5erDLw1sAWGcKVP2phw7Rvb3pXf8FGh/Yg8du7KAg
ZAm96xdaNLPiATVDaZZHuoWZ3+S6zUbmx6QtpjU//EAOXhwQCoTdhDme9QyPDI/2
kA+oldSXr+M=
=bBRP
-----END PGP SIGNATURE-----


More information about the Python-Dev mailing list