[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

AltStyle によって変換されたページ (->オリジナル) /