On Mon, Apr 29, 2013 at 6:51 AM, Eli Bendersky <eli...@gmail.com> wrote:
> I don't feel strongly about allowing ()-lookup in addition to []-lookup, but
> in this paragraph the issue of multiple definitions has sneaked in :-)
> flufl.enum disallows this:
>
> class Color(Enum):
>   red = 1
>   blue = 2
>   green = 1 # oops!
>
> Has it been decided that this is now allowed?

I don't recall if it was decided. I think it should be possible to
create aliases like this. The main thing I care about is that
Color.green == Color.red. I wouldn't mind if Color.green ends up as
just a different name for the Color.red object. The most common use
case is probably providing backwards compatibility with an old version
of the enum when renaming something -- e.g. one could write

class Color(Enum):
  ...
  turquoise = 42
  aqua = turquoise  # I can't tell them apart

Here the metaclass would see two different names with the same value (42).

> If this is indeed the case, then Color(1) is a problem. The options are:
>
> A. Return either Color.red or Color.green
> B. Throwing an error
>
> Do we have a decision on this? Personally I think the latter is better; the
> former is error prone and doesn't seem to be useful too often.

I think it should be A, and the choice should be the first one in
definition order.

--
--Guido van Rossum (python.org/~guido)
_______________________________________________
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