Как изменить базовое значение auto в Python Enum? - PullRequest
2 голосов
/ 02 мая 2019

Если у меня есть следующий код, как я могу изменить базовое значение auto так, чтобы Animal.ant был произвольным значением, например, 10, а не 1?

from enum import Enum, auto

class Animal(Enum):
    ant = auto()
    bee = auto()
    cat = auto()
    dog = auto()

Ответы [ 2 ]

3 голосов
/ 02 мая 2019

Если вы хотите, чтобы определенные члены имели определенные значения, просто присвойте им:

class Animal(Enum):
    ant = 10
    bee = auto()
    cat = auto()
    dog = auto()

И это автоматически скорректирует значения следующих членов:

>>> list(Animal)
[<Animal.ant: 10>, <Animal.bee: 11>, <Animal.cat: 12>, <Animal.dog: 13>]
2 голосов
/ 02 мая 2019

Вы можете использовать _generate_next_value_, чтобы изменить способ auto() выбрать значение.Например:

from enum import Enum, auto

class Auto_10(Enum):
    def _generate_next_value_(name, start, count, last_values):
        if name == "ant":
            return 10
        else:
           return last_values[-1] + 1

class Animal(Auto_10):
    ant = auto()
    bee = auto()
    cat = auto()
    dog = auto()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...