如何从枚举中获取特定字符串?
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
属性来获取枚举字符串。
所以我在 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
属性来获取枚举字符串。