A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2013-February/124308.html below:

[Python-Dev] [Python-checkins] peps: Pre-alpha draft for PEP 435 (enum). The name is not important at the moment, as

[Python-Dev] [Python-checkins] peps: Pre-alpha draft for PEP 435 (enum). The name is not important at the moment, asEthan Furman ethan at stoneleaf.us
Mon Feb 25 18:35:58 CET 2013
On 02/25/2013 08:37 AM, Barry Warsaw wrote:
> On Feb 25, 2013, at 07:12 AM, Ethan Furman wrote:
>
>> And if, in those places, the enums were based on ints (or strings), would it
>> hurt you?  Because in the places where I, as well as many others, use enums
>> we *need* the int portion; and having to wrap the enum in an int() call is
>> seven extra keystrokes (minor) and a heap of visual clutter (major),
>> destroying any value the enum was supposed to have.
>
> Yes, I think enum values inheriting from int (or string) would hurt.
>
> First, as your question implies, which is it?  int or str?  Some people want
> int some want str.  It can't be both, and I don't think we need two enum
> types.

I can see enums of at least three different types being useful: int, str, and bitmask; a valueless enum would be a fourth.


> It's a deeper question though, because if enum values inherited from int, then
> people would expect things like ``Colors.red == 1`` to work.  Maybe you think
> that doesn't look so bad, but that also implies:

I do expect that to work.


>      >>> Colors = make('Colors', 'red green blue'.split())
>      >>> Animals = make('Animals', 'ant bee cat'.split())
>      >>> Colors.green == Animals.bee

But this I don't, and in both mine, Ted's, and Alex's versions enums from different groups do not compare equal, 
regardless of the underlying value.  Of course, this does have the potential problem of `green == 1 == bee` but not 
`green == bee` which would be a problem with set and dicts -- but I'm the only one who has brought up that issue.


> I get that you think wrapping the value in int() is ugly.  I have a compromise
> that you might find acceptable.  EnumValues already have .enum and .name
> attributes, to give you the value's class and string name respectively.  It
> would be trivial to add a .int attribute to return the value.
>
> Thus if you want the int value, it would be easy enough to say
> ``Colors.green.int`` or ``Animals.bee.int``

Well, it certainly isn't as ugly, and isn't as hard on the wrists.  If your's is the package that makes it in the stdlib 
I would certainly appreciate the modification.

However, as I replied to Skip, I think a stdlib solution should meet many needs, and sometimes (often, for some people 
;) those needs will be better served by an int-based or str-based enum.

--
~Ethan~
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4