[Python-Dev] PEP-435 reference implementation
Ethan Furman
ethan at stoneleaf.us
Wed May 1 01:49:52 CEST 2013
On 04/30/2013 03:34 PM, Ethan Furman wrote:
> On 04/30/2013 03:24 PM, Glenn Linderman wrote:
>> On 4/30/2013 1:12 PM, Ethan Furman wrote:
>>> Greetings,
>>>
>>> Eli asked me to put the reference implementation here for review.
>>>
>>> It is available at https://bitbucket.org/stoneleaf/aenum in ref435.py and test_ref435.py
>>
>> Thanks for the code reference.
>>
>> Tests ran fine here on Python 3.3
>>
>> If I alter test_ref435.py at the end, as follows, I get an error: nothing matches 'BDFL'
>> Can someone explain why?
>>
>>
>> if __name__ == '__main__':
>> class AnotherName( Name ):
>> 'just uses prior names'
>> print(AnotherName['BDFL'])
>
> Because Guido said no subclassing.
>
> At this point, if you try to subclass all your getting is the same type. So AnotherName is a string Enumeration.
It wouldn't be hard to check for instances of the Enum in question, and if there are some to raise an error instead.
That way:
--> class StrEnum(str, Enum):
... 'str-based enumerations'
--> class Names(StrEnum): # this works, as StrEnum has no instances
... BDFL = 'GvR'
--> class MoreNames(Names): # this fails, as Names has instances
Thoughts?
--
~Ethan~
More information about the Python-Dev
mailing list