On Sun, Apr 21, 2013 at 11:29 AM, Steven D'Aprano <st...@pearwood.info> wrote:
> I would argue that it is the responsibility of enums to start with the least
> restrictions as is reasonable, and leave additional restrictions up to
> subclasses, rather than the other way around. (I'll just quietly mention the
> Liskov Substitution Principle here...) If some people need enums to have
> unique
> values, then enforcing that should be their responsibility, and not forced
> on
> all users whether they need that restriction or not.
>
> If there is enough demand for that, then perhaps the enum module could
> provide a
> standard mechanism for enforcing unique values, via a flag, or a subclass,
> say.

The PEP is fine, as it already allows duplicate names without encouraging them:

    class Insect(Enum):
        wasp = 1  # Preferred. Use this in new code.
        bee = 2
        ant = 3
    # Backwards compatibility aliases
    Insect.wsap = Insect.wasp

If you have a lot of such aliases:

   aliases = {
       "wasp": ["wsap"],
       ...
   }
   for attr, names in aliases.items():
       for name in names:
           setattr(Insect, name, getattr(Insect, attr))

A more concise syntax for handling duplicates may prove desirable at
some point in the future, but this is a case where encouraging
correctness by default is a good idea.

Cheers,
Nick.

--
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to