[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Should nested classes in an Enum be Enum members?

Ethan Furman <ethan at stoneleaf.us> writes:

> Consider the following Enum definition:
>   class Color(Enum):
>       RED = 1
>       GREEN = 2
>       BLUE = 3
>       @property
>       def lower(self):
>           return self.name.lower()
>       def spam(self):
>           return "I like %s eggs and spam!" % self.lower
>       class SomeClass:
>           pass

That dumbfounds my intuitions.

Specifically, I can't make sense of why someone would want to have a
class that is simultaneously behaving as an enumerated type, *and* has
an API of custom callable attributes.

> Question:
>   Should `SomeClass` be an enum member?  When would it be useful to
>   have an embedded class in an Enum be an enum member?

I can't think of a satisfactory answer to the question ?Why is SomeClass
defined inside that enumerated type at all??

> So I'm asking the community:  What real-world examples can you offer
> for either behavior?

That set is empty.

I'd be going straight to the author of that code; or, if that weren't an
option, re-factoring that code at the next opportunity.

 \         ?Our urge to trust our senses overpowers what our measuring |
  `\         devices tell us about the actual nature of reality.? ?Ann |
_o__)                                           Druyan, _Cosmos_, 2014 |
Ben Finney