[Python-Dev] Enum Eccentricities

Chris Lambacher chris at kateandchris.net
Mon Sep 23 15:45:46 CEST 2013

On Sun, Sep 22, 2013 at 10:41 PM, Zero Piraeus <z at etiol.net> wrote:

> I may be misunderstanding the use case given in the issue,

To clarify the use case, since it is my bug, this is so that the enum
values are always available for comparison. The exact use case is in Django
templates where a value comes from the database. If you want to compare you
either have to use __class__ which I would say is a code smell, or you have
to provide the Enum class. The code we are using for this is open source
http://github.com/tindie/django-tidyenum. An example of how this will be
used in practice is:

    {% if object.state == object.state.completed %}
      some html
    {% endif %}

> but it seems
> to me that having to use
>     Color.red.__class__.blue
> (what is being complained about in the issue), while not exactly pretty,
> makes a lot more semantic sense than
>     Color.red.blue
> ... which is just bizarre.

Any more bizarre than any other class that has properties of it's own type?

      a = 0

It is only weird because we are not used to seeing classes where the
properties are instances of the class. I am not a core developer, but I
have been programming in Python for more than 10 years, and I (and the
other similarly experienced developers I work with) found that not having
access to the class level properties was weird (yes I am aware that they
are not actually class level properties but everywhere else Enum works hard
to make it look like they are. See for instance the __dir__ method:


Christopher Lambacher
chris at kateandchris.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130923/91305d45/attachment.html>

More information about the Python-Dev mailing list