[Python-Dev] enum discussion: can someone please summarize open issues?

Steven D'Aprano steve at pearwood.info
Mon Apr 29 10:30:13 CEST 2013


On Sun, Apr 28, 2013 at 11:50:16PM -0700, Ethan Furman wrote:

> In other words, currently:
> 
>   class Color(Enum):
>       red = 1
>       green = 2
>       blue = 3
> 
>   class MoreColor(Color):
>       cyan = 4
>       magenta = 5
>       yellow = 6
>       black = 7
> 
>   MoreColor.red is Color.red  # True

Correct.


> But as soon as:
> 
>   type(Color.red) is Color          # True
>   type(MoreColor.red) is MoreColor  # True

I don't believe this is correct. As I understand it, the proposal is the 
weaker guarantee:

  isinstance(Color.red, Color) # True, possibly using __instancecheck__


Since red is not defined by MoreColor, there's no reason to expect that 
it will be a MoreColor instance. As far as I understand it, there is no 
guarantee that

  isinstance(MoreColor.red, MoreColor)

will be true, even if that is possible using __instancecheck__.



-- 
Steven


More information about the Python-Dev mailing list