[Python-Dev] enum discussion: can someone please summarize open issues? (original) (raw)

Ethan Furman ethan at stoneleaf.us
Thu May 2 17:15:02 CEST 2013


On 05/02/2013 07:57 AM, Barry Warsaw wrote:

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 types?" 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 subclass. 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.

Same object, true, but my question was if type(Bar.a) is Bar, and in your reply type(Bar.a) is object.

-- Ethan



More information about the Python-Dev mailing list