[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library (original) (raw)
Ethan Furman ethan at stoneleaf.us
Thu Apr 25 18:39:01 CEST 2013
- Previous message: [Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
- Next message: [Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 04/25/2013 09:34 AM, Eli Bendersky wrote:
On Thu, Apr 25, 2013 at 8:46 AM, Ethan Furman <ethan at stoneleaf.us <mailto:ethan at 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 returningAnimals.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
- Previous message: [Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
- Next message: [Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]