Re: [Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library

2013年4月26日 14:01:09 -0700

26.04.13 11:00, Greg Ewing написав(ла):
However, there's a worse problem with defining enum
inheritance that way. The subtype relation for extensible
enums works the opposite way to that of classes.
To see this, imagine a function expecting something
of type Colors. It knows what to do with red, green and
blue, but not anything else. So you *can't* pass it
something of type MoreColors, because not all values
of type MoreColors are of type Colors.
On the other hand, you *can* pass a value of type Colors
to something expecting MoreColors, because every value of
Colors is also in MoreColors.
I propose do not use an inheritance for extending enums, but use an import.
class Colors(Enum):
 red = 1
 green = 2
 blue = 3
class MoreColors(Enum):
 from Colors import *
 cyan = 4
 magenta = 5
 yellow = 6
An inheritance we can use to limit a type of values.
class Colors(int, Enum): # only int values
 red = 1
 green = 2
 blue = 3
Colors.viridity = green
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to