[Python-ideas] A way out of Meta-hell (was: A (meta)class algebra)

Martin Teichmann lkb.teichmann at gmail.com
Thu Feb 19 13:28:09 CET 2015


> Yes, populating __class__ happens inside the interpreter only after the
> class is fully constructed, so even though the *class* is fully initialised
> at the end of __init__, a reference hasn't been inserted into the cell yet.
> (The __class__ cell doesn't actually live on the class object - it's created
> implicitly by the interpreter and then referenced from the individual
> methods as a closure variable for each method that looks up "__class__" or
> "super")
>
> Python 2 doesn't provide the implicitly populated __class___ cell at all
> though, so you have to refer to the class object by its name - zero argument
> super is a Python 3 only feature.

In short: PEP 422 in the current form is not back-portable.
With my modifications it is portable all the way down to python 2.7.

PEP 422 being back-portable => people will immediately start using it.
PEP 422 not back-portable => it won't be used for several years to come.

Greetings

Martin


More information about the Python-ideas mailing list