Enum with only a single member

Peter Otten __peter__ at web.de
Tue Jan 10 04:52:26 EST 2017


Steven D'Aprano wrote:

> Is it silly to create an enumeration with only a single member? That is, a
> singleton enum?
> 
> from enum import Enum
> 
> class Unique(Enum):
>     FOO = auto()
> 
> 
> The reason I ask is that I have two functions that take an enum argument.
> The first takes one of three enums:
> 
> class MarxBros(Enum):
>     GROUCHO = 1
>     CHICO = 2
>     HARPO = 3
> 
> and the second takes *either* one of those three, or a fourth distinct
> value. So in my two functions, I have something like this:
> 
> 
> def spam(arg):
>     if isinstance(arg, MarxBros):
>         ...
> 
> 
> def ham(arg):
>     if isinstance(arg, MarxBros) or arg is Unique.FOO:
>         ...
> 
> 
> Good, bad or indifferent?

I don't see a problem. As it looks like you cannot subclass Enum subclasses 
alternative spellings might be

isintance(args, (MarxBros, Unique))

or

BOTH = set(MarxBros) | set(Unique)
arg in MarxBros
arg in BOTH



More information about the Python-list mailing list