On 4/30/2013 11:08 PM, Barry Warsaw wrote:
On Apr 28, 2013, at 07:46 PM, Ethan Furman wrote:

and similarly, Enum behavior /should be/ (in my opinion ;)

Season.AUTUMN is Season('AUTUMN') is Season(3)
I think you'll have a problem with this.  flufl.enum did this, but it has an
inherent conflict, which is why we removed the getattr-like behavior.

class Things(Enum):
     foo = 'bar'
     bar = 'foo'

What does Things('foo') return?

Note that it doesn't matter if that's spelled Things['foo'].

Whether it's defined as lookup or instance "creation", you should only map
values to items, and not attribute names to items, and definitely not both.
Let getattr() do attribute name lookup just like normal.

I agree that it is confusing to be able to index by either the name of the enum or its value, in the same method. The current implementation prefers the names, but will check values if the name is not found, I discovered by experimentation, after reading the tests. But when there are conflicts (which would be confusing at best), the inability to look up some enumerations by value, because the one with that name is found first, would be even more confusing.

Can Things('foo') lookup by name and Things['foo'] lookup by value? Or does that confuse things too?
_______________________________________________
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