[Python-Dev] class name spaces inside an outer function

Benjamin Peterson benjamin at python.org
Sun Apr 28 03:38:08 CEST 2013


2013/4/27 Nick Coghlan <ncoghlan at gmail.com>:
>
> On 28 Apr 2013 04:30, "Ethan Furman" <ethan at stoneleaf.us> wrote:
>>
>> I filed bug http://bugs.python.org/issue17853 last night.
>>
>> If somebody could point me in the right direction (mainly which files to
>> look in), I'd be happy to attempt a patch.
>
> Hmm, interesting challenge. A key part of the problem is that the 3.x
> compiler assumes there's no way to inject names it doesn't know about into
> code inside a function - we missed the fact that you could still do it with
> a nested class and a metaclass __prepare__ method.

That's not the problem. You can't inject names dynamically into a
function scope with variables in a class scope, since nothing closes
over them.

>
> I suspect resolving it sensibly will require a new opcode that tries a
> local-only load and then falls back to loading from a cell rather than from
> a global/builtins lookup.

Yes.



--
Regards,
Benjamin


More information about the Python-Dev mailing list