[Python-Dev] PEP 435 -- Adding an Enum type to the Python standard library (original) (raw)

Eli Bendersky eliben at gmail.com
Thu Apr 25 18:47:45 CEST 2013


On Thu, Apr 25, 2013 at 9:39 AM, Ethan Furman <ethan at stoneleaf.us> wrote:

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 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')

Yes, this works in the current implementation. But I'm realizing that the recent proposals of making isinstance(Color.red, Color) True will turn things around anyway so this discussion may be moot.

Eli -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20130425/d525eb81/attachment.html>



More information about the Python-Dev mailing list