On 04/25/2013 09:34 AM, Eli Bendersky wrote:



On Thu, Apr 25, 2013 at 8:46 AM, Ethan Furman <et...@stoneleaf.us 
<mailto:et...@stoneleaf.us>> wrote:

    On 04/25/2013 06:03 AM, Eli Bendersky wrote:


        The __call__ syntax has been repurposed for the convenience API:

        --> Animals = Enum('Animals', 'ant bee cat dog')
        --> Animals

        <Animals {ant: 1, bee: 2, cat: 3, dog: 4}>
        --> Animals.ant
        <EnumValue: Animals.ant [value=1]>
        --> Animals.ant.value

        1

        The aforementioned deprecated syntax refers to __call__ with a single 
arguments (the convenience API by definition
        requires more than one).


    I don't understand why having Enum() be the convenience function rules out 
`Animals(1)` from returning `Animals.ant`.


Because we already have a way to do that: Animals[1]. Why do you need two 
slightly different ways to do the same?
Moreover, why do you want to make Animals.__call__ behave very differently 
based only on the number of args? This seems
to be un-pythonic in multiple ways.

I think we're talking past each other (or I'm not awake yet ;).

Animals is a class. Giving Animals a parameter (such as 1 or 'ant') should return the instance that matches. This is how classes work.

I don't understand your assertion that there is another way to call Animals... 
do you mean something like:

--> MoreAnimals = Animals('MoreAnimals', 'bird worm insect')

?

--
~Ethan~
_______________________________________________
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