[Python-Dev] PEP 560 vs metaclass' class definition protections [was Re: What is the design purpose of metaclasses ...] (original) (raw)
Ethan Furman ethan at stoneleaf.us
Sat Oct 14 12:14:34 EDT 2017
- Previous message (by thread): [Python-Dev] What is the design purpose of metaclasses vs code generating decorators? (was Re: PEP 557: Data Classes)
- Next message (by thread): [Python-Dev] PEP 560 vs metaclass' class definition protections [was Re: What is the design purpose of metaclasses ...]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 10/14/2017 08:57 AM, Ivan Levkivskyi wrote:
On 14 October 2017 at 17:49, Ethan Furman wrote:
The problem with PEP 560 is that it doesn't allow the class definition protections that a metaclass does. Since the discussion turned to PEP 560, I can say that I don't want this to be a general mechanism, the PEP rationale section gives several specific examples why we don't want metaclasses to implement generic class machinery/internals. Could you please elaborate more what is wrong with PEP 560 and what do you mean by "class definition protections"
Nothing is wrong with PEP 560. What I am referring to is:
class MyEnum(Enum): red = 0 red = 1
The Enum metaclass machinery will raise an error at the "red = 1" line because it detects the redefinition of "red". This check can only happen during class definition, so only the metaclass can do it.
--
Ethan
- Previous message (by thread): [Python-Dev] What is the design purpose of metaclasses vs code generating decorators? (was Re: PEP 557: Data Classes)
- Next message (by thread): [Python-Dev] PEP 560 vs metaclass' class definition protections [was Re: What is the design purpose of metaclasses ...]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]