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

Barry Warsaw barry at python.org
Thu May 2 16:57:30 CEST 2013

On May 01, 2013, at 11:54 AM, Larry Hastings wrote:

>On 04/30/2013 11:29 PM, Ethan Furman wrote:
>> On 04/30/2013 11:18 PM, Barry Warsaw wrote:
>>> On Apr 28, 2013, at 11:50 PM, Ethan Furman wrote:
>>>> But as soon as:
>>>>    type(Color.red) is Color          # True
>>>>    type(MoreColor.red) is MoreColor  # True
>>>> then:
>>>>     Color.red is MoreColor.red  # must be False, no?
>>>> If that last statement can still be True, I'd love it if someone >>> showed me
>>>> how.
>>> class Foo:
>>>      a = object()
>>>      b = object()
>>> class Bar(Foo):
>>>      c = object()
>>>>>> Foo.a is Bar.a
>>> True
>> Wow.  I think I'm blushing from embarrassment.
>> Thank you for answering my question, Barry.
>Wait, what?  I don't see how Barry's code answers your question.  In his
>example, type(a) == type(b) == type(c) == object.  You were asking "how can
>Color.red and MoreColor.red be the same object if they are of different
>p.s. They can't.

Sure, why not?  In "normal" Python, Bar inherits a from Foo, it doesn't define
it so it's exactly the same object.  Thus if you access that object through
the superclass, you get the same object as when you access it through the

So Foo.a plays the role of Color.red and Bar.a plays the role of
MoreColor.red.  Same object, thus `Foo.a is Bar.a` is equivalent to `Color.red
is MoreColor.red`.


More information about the Python-Dev mailing list