如何创建自引用的Python3枚举?

2022-03-25 00:00:00 python python-3.6

问题描述

我是否可以创建枚举类RockPaperScissors使ROCK.value == "rock"ROCK.beats == SCISSORS,其中ROCKSCISSORS都是RockPaperScissors中的常量?


解决方案

枚举成员是该类型的实例。这意味着 您只能使用常规属性:

from enum import Enum

class RockPaperScissors(Enum):
    Rock = "rock"
    Paper = "paper"
    Scissors = "scissors"

    @property
    def beats(self):
        lookup = {
            RockPaperScissors.Rock: RockPaperScissors.Scissors,
            RockPaperScissors.Scissors: RockPaperScissors.Paper,
            RockPaperScissors.Paper: RockPaperScissors.Rock,
        }
        return lookup[self]

相关文章