Question: I'm using class enum.Enum in order to create a variable with selected members.

The main reason is to enable other developers in my team to use the same convention by selecting one of several permitted members for variable.

I would like to create a Boolean variable in the same way, enabling other developers to select either True or False.

Is it possible to define an enum which will receive True False options? Is there any better alternative?

The following options don't work:

> 
> boolean\_enum = Enum('boolean\_enum', 'True False')
> 
> 
> boolean\_enum = Enum('boolean\_enum', True False)
> 
> 
>

Answer: 
```
boolean_enum = Enum('boolean_enum', [('True', True), ('False', False)])

```

Checkout the documentation of this API: <https://docs.python.org/3/library/enum.html#functional-api>

If you just specify 'True False' for the names parameter, they will be assigned automatic enumerated values (1,2) which is not what you want.
And of courase you can't just send True False without it being a string argument for the names parameter.

so what you want is one of the options that allow you to specify name and value, such as the above.

**Edit:**  

When defined as above, the enum elements aren't accessible by `boolean_enum.True` (but they are accessible by `boolean_enum['True']` or `boolean_enum(True)`).  

To avoid this issue, the field names can be changed and defined as 

```
Enum('boolean_enum', [('TRUE', True), ('FALSE', False)])

```

Then accessed as `boolean_enum.TRUE` or `boolean_enum['TRUE']` or `boolean_enum(True)`
Nowadays (python 3.6+) this could be much more conveniently achieved by using `enum.Flag`:

```
from enum import Flag

class Boolean(Flag):
    TRUE = True
    FALSE = False

```

An added benefit of `enum.Flag` over `enum.Enum` is that it supports (and is closed under) bit-wise operators (`&,|,~`) from the get-go:

```
>>> Boolean.TRUE & Boolean.FALSE
Boolean.FALSE
>>> Boolean.TRUE | Boolean.FALSE
Boolean.TRUE
>>> ~Boolean.FALSE
Boolean.TRUE

```

For more information see <https://docs.python.org/3/library/enum.html#enum.Flag>