Python's super() considered super!
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Fri May 27 12:06:05 EDT 2011
On Fri, 27 May 2011 08:31:40 -0700, sturlamolden wrote:
> On 27 Mai, 17:05, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
>
>> Oops. There's a reason why Python 2 requires you to be explicit about
>> the class; you simply cannot work it out automatically at run time.
>> Python 3 fixes this by working it out at compile time, but for Python 2
>> there is no way around it.
>
> Then it should be a keyword, not a function.
Why? The fault is not that super is a function, or that you monkey-
patched it, or that you used a private function to do that monkey-
patching. The fault was that you made a common, but silly, mistake when
reasoning about type(self) inside a class.
I made the same mistake: assume that type(self) will always be the same
class as that the method is defined in. But of course it won't be. With
the luxury of hindsight, it is a silly mistake to make, but I promise you
that you're not the first, and won't be the last, to make it.
--
Steven
More information about the Python-list
mailing list