У меня есть два перечисления NAME и ALIAS, которые гарантированно содержат одинаковое количество констант, и мне нужен способ преобразования каждой константы из NAME в соответствующую константу из ALIAS. и наоборот. Например:
Код: Выделить всё
def name_to_alias(name):
if name == Name.PAUL:
return Alias.STARCHILD
elif name == Name.GENE:
return Alias.DEMON
...
def alias_to_name(alias):
if alias == Alias.STARCHILD:
return Name.PAUL
elif alias == Alias.DEMON:
return Name.GENE
...
Я не хочу поддерживать две подобные функции (или словаря). В идеале я хотел бы иметь сопоставления перечислений в одной структуре данных, к которой я мог бы получить доступ из обеих функций преобразования.
Я думаю о чем-то вроде:
Код: Выделить всё
mappings = {
Name.PAUL: Alias.STARCHILD
Name.GENE: Alias.DEMON
...
}
Это будет работать для преобразования имени в псевдоним, но при обратном могут возникнуть проблемы (что произойдет, если я сделаю ошибку копирования и вставки и в итоге получу два диктовских ключа с одинаковым значением?). Есть ли простой и безопасный способ добиться этого?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... -constants