[Python-ideas] Should nested classes in an Enum be Enum members?

Serhiy Storchaka storchaka at gmail.com
Sat Jun 30 04:15:31 EDT 2018

29.06.18 03:25, Steven D'Aprano пише:
> On Thu, Jun 28, 2018 at 06:57:45AM +0300, Serhiy Storchaka wrote:
>> Making a nested class a member you
>> don't lost anything, because you always can make it not-nested if you
>> don't want it be a member.
> You lose the ability to have
>      Colors.RED.NestedClass()  # returns something useful
>      # similar to Colors.RED.method()

Since NestedClass is an enum member, you should use 
Colors.RED.NestedClass.value() or just Colors.NestedClass.value() for 
calling its value.

If you don't want it be a member, just don't initialize it in the enum body.

class Color(Enum):
     RED = 1

class NestedClass:

Color.RED.NestedClass = NestedClass

Now Color.RED.NestedClass() can return something useful.

More information about the Python-ideas mailing list