PEP 354: Enumerations in Python
Roy Smith
roy at panix.com
Tue Feb 28 21:34:22 EST 2006
Ben Finney <bignose+hates-spam at benfinney.id.au> wrote:
> > a = enum ('foo', 'bar', 'baz')
> > b = enum ('foo', 'bar', 'baz')
>
> Two separate enumerations are created
OK, most of the rest follows from that.
> > str (a)
>
> Not defined in the current specification. Suggestions?
Well, by analogy with
>>> a = set ((1, 2, 3))
>>> print '%s' % a
set([1, 2, 3])
I would think:
enum('foo', 'bar', 'baz')
would make sense.
> > repr (a)
>
> Not defined in the current specification. Suggestions?
Hmm. Maybe what I suggested for str() would work for repr() too. I'm a
little worried, however, about things that aren't == but print the same.
It might make more sense for repr() to include the id (in the style of
'<__main__.x instance at 0x8208f6c>'). Same with the repr() of an enum
member.
> > hash (a)
>
> -1210774164 # or some other hash value
I saw some debate about mutable or immutable. Doesn't making something
hashable kinda-sorta mean it has to be immutable?
> > You imply that it works from "An enumerated type is created from a
> > sequence of arguments to the type's constructor", but I suspect
> > that's not what you intended.
>
> That's what I intended; a sequence of arguments. Is there a better way
> to refer to the positional arguments collectively?
I'm not really a language lawyer, so I can't say. I was mostly trying to
explore the corners of the envelope.
> > There's been a number of threads recently where people called
> > regex methods with flags (i.e. re.I) when integers were expected, with
> > bizarre results. Making the flags into an enum would solve the problem
> > while retaining backwards compatibility.
>
> Yes, this is a prime use case for enums. I tried to cover this in the
> "Motivation"::
>
> Other examples include error status values and states
> within a defined process.
>
> Can anyone think of a better way to express this, without necessarily
> referring to any specific set of flags or states or codes or whatever?
Cite the regex thread :-)
More information about the Python-list
mailing list