如何解决如何从枚举中获取特定字符串?
所以我在 python 中得到了这个练习,在 tkinter 中创建随机数量的圆圈并用它做一些事情,不管是什么都没关系。主要问题是,当我想创建某个圆的实例时,我还必须随机选择一种颜色。如果我得到一个列表(我后来拼命创建)并且只在 random.randint(0,len(list)-1) 之间选择一个数字,那将没有问题。但是我们的老师为我们创建了一个类,我只是不知道如何从中实际获取单一颜色。尝试了一切,用谷歌搜索任何可能的东西,但没有出现任何答案。你对如何做到这一点有什么想法吗?
代码:
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),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
属性来获取 Enum 字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。