[Python-3000] Fixing super anyone?
Phillip J. Eby
pje at telecommunity.com
Mon Apr 23 23:31:31 CEST 2007
At 11:08 PM 4/23/2007 +0200, Michele Cella wrote:
>My solution is nice (IMHO) for the simplest use case (and, probably, the
>most frequent) but it's behavior is really unclear for these complex use
>cases. Thanks for pointing that out.
>
>As far as I'm concerned, I can only confirm that having a super keyword
>with methods attached (like Aahz said) when no other keyword has (and
>there are many) doesn't feel right (to me) and can be confusing at
>first. That's unfortunate as I rarely found python confusing up to now
>(contrary to other languages).
>
>The only other option that comes to my mind is using a special attribute
>in the instance itself (like __class__, __dict__, ...):
>
> self.__super__.mymethod(arg)
>
>I'm sure this (again) introduces other problems I simply overlooked, in
>this case, forgive me please. ;-)
One other option that's been used more and more lately are parentheses, as in:
(super self).foo()
But I can't say I particularly like this idea, compared to "super.foo" or
even "super(self).foo". In fact, the latter invocation doesn't even
require a keyword -- it just means the compiler needs to include a cell
variable for the current class whenever it thinks you might be using super().
More information about the Python-3000
mailing list