[creating new thread]

On 04/29/2013 01:30 AM, Steven D'Aprano wrote:
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__


Words from Guido:

On 04/23/2013 08:11 AM, Guido van Rossum wrote:
I gotta say, I'm with Antoine here. It's pretty natural (also coming
from other languages) to assume that the class used to define the
enums is also the type of the enum values. Certainly this is how it
works in Java and C++, and I would say it's the same in Pascal and
probably most other languages.


On 04/25/2013 02:54 PM, Guido van Rossum wrote:
I don't know what's going on, but it feels like we had this same
discussion a week ago, and I still disagree. Disregarding, the C[i]
notation, I feel quite strongly that in the following example:

class Color(Enum):
     red = 1
     white = 2
     blue = 3
     orange = 4

the values Color.red etc. should be instances of Color. This is how
things work in all other languages that I am aware of that let you
define enums.

On 04/25/2013 03:19 PM, Guido van Rossum wrote:
I suppose you were going to propose to use isinstance() overloading,
but I honestly think that Color.red.__class__ should be the same
object as Color.

On 04/25/2013 03:37 PM, Guido van Rossum wrote:
TBH I had a hard time getting over the fact that even though the class
said "a = 1", C.a is not the integer 1. But I did get over it.
Hopefully you can get over *this* weirdness.

[and from the summary thread]

On 04/28/2013 01:02 PM, Guido van Rossum wrote:
On Sun, Apr 28, 2013 at 12:32 PM, Ethan Furman wrote:

   - should enum items be of the type of the Enum class? (i.e. type(SPRING)
is Seasons)

IMO Yes.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
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