[Python-Dev] PEP 520: Ordered Class Definition Namespace (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Thu Jun 9 17:39:40 EDT 2016


On 7 June 2016 at 20:17, Eric Snow <ericsnowcurrently at gmail.com> wrote:

On Tue, Jun 7, 2016 at 6:20 PM, Ethan Furman <ethan at stoneleaf.us> wrote:

If definitionorder is supposed to be immutable as well as read-only then we should convert non-tuples to tuples. No point in letting that user bug slip through. Do you mean if a class explicitly defines definitionorder? If so, I'm not clear on how that would work. It could be set to anything, including None or a value that does not iterate into a definition order. If someone explicitly set definitionorder then I think it should be used as-is.

I'm guessing Ethan is suggesting defining it as:

__definition_order__ = tuple(ns["__definition_order__"])

When the attribute is present in the method body.

That restriction would be comparable to what we do with slots today:

>>> class C:
...     __slots__ = 1
...
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list