微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

所以我在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?