[Python-Dev] PyPy, Jython, & IronPython: Enum convenience function and pickleablity
Georg Brandl
g.brandl at gmx.net
Fri May 3 07:20:04 CEST 2013
Am 02.05.2013 23:57, schrieb Eli Bendersky:
>> Eli, it would be nice if you stopped with this claim.
>
>
> I'm not advocating "not having a convenience syntax", I'm advocating
> having a convenience syntax which is *class-based* rather than
> function-based.
>
> Debuggers are beside the point: there are two kinds of "convenience
> syntax" on the table; one allows pickling by construction, one
> requires an ugly hack which may not solve all cases (and which may
> apparently make Jython / IronPython mildly unhappy). Why you insist
> on ignoring the former and imposing the latter is beyond me.
>
>
> I'm not trying to belittle our class-based suggestion. I just think there are
> two separate issues here, and I was focusing on just one of them for now. The
> one I've been focusing on is how to make the function-based convenience syntax
> work with pickling in the vast majority of interesting cases. This appears to be
> possible by using the same pattern used by namedtuple, and even better by
> encapsulating this pattern formally in stdlib so it stops being a hack (and may
> actually be useful for other code too).
>
> The other issue is your proposal to have a class-based convenience syntax akin
> to (correct me if I got this wrong):
>
> class Animal(Enum):
> __values__ = 'cat dog'
>
> This is obviously a matter of preference (and hence bikeshedding), but this
> still looks better to me:
>
> Animal = Enum('Animal', 'cat dog')
>
> It has two advantages:
>
> 1. Shorter
> 2. Parallels namedtuple, which is by now a well known and widely used construct
Not to forget 3. Has to specify the class name twice for good measure ;)
Georg
More information about the Python-Dev
mailing list