original) (raw)
(It's a common pattern to do this with a base class rather than aOn Wed, May 1, 2013 at 2:04 PM, Eli Bendersky <eliben@gmail.com> wrote:
>
>
>
> On Wed, May 1, 2013 at 2:00 PM, Antoine Pitrou <solipsis@pitrou.net> wrote:
>>
>> On Wed, 1 May 2013 13:57:11 -0700
>> Eli Bendersky <eliben@gmail.com> wrote:
>> >
>> > I still don't understand what you mean, sorry. Like, this:
>> >
>> > class MyEmptyEnum(Enum):
>> > � pass
>> >
>> > Why would you want to subclass MyEmptyEnum ?
>> >
>> > Or do you mean this:
>> >
>> > class IntEnum(int, Enum):
>> > � pass
>> >
>> > Now I can have:
>> >
>> > class SocketFamily(IntEnum):
>> > � ??
>> >
>> > If it's the latter, then why allow subclassing explicitly just for this
>> > reason?
>>
>> Because I may want to share methods accross all concrete subclasses of
>> IntEnum (or WhateverEnum).
>
>
> You mean this?
>
> class BehaviorMixin:
> � # bla bla
>
> class MyBehavingIntEnum(int, BehaviorMixin, Enum):
> � foo = 1
> � bar = 2
mixin, though, and I think the rule "only allow subclassing empty
enums" makes a lot of sense.
class IETFStatusCode:
� � @classmethod
� � def from\_statusline(cls, line):
� � � � return cls(int(line.split()\[0\]))
class HTTPStatusCode(int, IETFStatusCode, Enum):
��� NOT\_FOUND = 404
class SIPStatusCode(int, IETFStatusCode, Enum):
� � RINGING = 180
That said, I don't feel strongly about this so if the above does not convert you, I'm fine with allowing subclassing enum classes that don't define any enums =)