New submission from Eric Snow:

(related to PEP 422 and issue #17044)

The execution namespace from a class definition is passed as the third argument 
to the metaclass (see builtin___build_class__() in Python/bltinmodule.c).  When 
applicable, which is almost always, the subsequent call to type.__new__() 
copies that namespace into a new dict which is in turn exposed via the class's 
__dict__.

This matters in the case where a metaclass with __prepare__() gets used (or the 
PEP 422 equivalent).  The language reference[1] should note that the object 
returned by __prepare__() is copied into a new dict when the class is finally 
created via the metaclass.

[1] 
http://docs.python.org/3.4/reference/datamodel.html#customizing-class-creation

----------
assignee: docs@python
components: Documentation
messages: 184188
nosy: docs@python, eric.snow, ncoghlan
priority: normal
severity: normal
stage: needs patch
status: open
title: language reference should specify restrictions on class namespace
type: enhancement
versions: Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17422>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to