[Python-Dev] Enum: subclassing?

Georg Brandl g.brandl at gmx.net
Wed May 1 20:59:15 CEST 2013


Am 01.05.2013 20:44, schrieb Antoine Pitrou:
> On Wed, 01 May 2013 10:21:30 -0700
> Ethan Furman <ethan at stoneleaf.us> wrote:
>> We may not want to /completely/ disallow subclassing.  Consider:
>> 
>> --> class StrEnum(str, Enum):
>> ...    '''string enums for Business Basic variable names'''
>> ...
>> --> class Vendors(StrEnum):
>> EnumError: subclassing not allowed
> 
> I don't see the point of disallowing subclassing. It sounds like
> a pointless restriction.
> 
> However, perhaps the constructor should forbid the returning of a base
> type, e.g.:
> 
> class Season(Enum):
>     spring = 1
> 
> class MySeason(Season):
>     """I look nicer than Season"""
> 
> MySeason('spring')
> ...
> ValueError: Season.spring is not a MySeason instance
> 
> (what this means is perhaps the subclassing of non-empty enum classes
> should be forbidden)

That's exactly what's implemented in the ref435 code at the moment.

Georg



More information about the Python-Dev mailing list