如何从枚举中获取特定字符串?

How do I get a specific string out of enum?

所以我在 python 中做了这个练习,在 tkinter 中创建随机数量的圆圈并用它做一些事情,不管怎样。主要问题是当我想创建某个圆的实例时,我还必须随机选择一种颜色。如果我得到一个列表(我后来拼命创建自己的列表)并且只需在 random.randint(0, len(list)-1) 之间选择一个数字,那就没问题了。但是我们的老师为我们创建了一个 class 而我只是不知道如何从中实际获得单一颜色。什么都试过了,用谷歌搜索任何可能的东西,但没有答案出现。您对如何做到这一点有什么想法吗?

代码:

class Colors(Enum):
    BLUE = 'blue'
    RED = 'red'
    GREEN = 'green'
    GREY = 'grey'
    YELLOW = 'yellow'


#method of another class
def someMethod(self):
    #calculations for coordinations etc. would be here, which is unimportant for my question
    #below you can see the temporary solution with list, not using that enum class Colors
    color = ['blue', 'red', 'green', 'grey', 'yellow']
    FallDownAtom(x, y, rad, color[random.randint(0, len(color)-1)], random.randint(3, 6), 
                 random.randint(3, 6)))

将我的评论移至答案。

import random

from enum import Enum

class Colors(Enum):
    BLUE = 'blue'
    RED = 'red'
    GREEN = 'green'
    GREY = 'grey'
    YELLOW = 'yellow'

    @classmethod
    def get(cls, val):
        if val in cls._value2member_map_:
            return cls(val)

        return None


print(Colors.BLUE.name) # BLUE
print(Colors.GREEN.value) # green - String value of the enum

print(random.choice(list(Colors))) # Random enum

print(Colors.get("grey")) # Colors.GREY

你的问题标题和描述不一样,所以我打了多个电话。

编辑

错误:...first choice it threw this: _tkinter.TclError: unknown color name "Colors.GREY" - 这是因为您使用的是枚举,而不是字符串。您需要使用 .value 属性来获取枚举字符串。