将字符串转换为 Enum 子类的相应实例的正确方法是什么?似乎 getattr(YourEnumType, str) 完成了这项工作,但我不确定它是否足够安全。 例如,假设我有一个枚举 class BuildType(Enum): debug = 200 release = 400 给定字符串 'debug' ,我怎样才能得到 BuildType.debug 作为结果?
class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 @staticmethod def from_string(s): for color in Color: if color.name == s or str(color.value) == s: return color raise ValueError(f"Invalid color name or value: {s}") 3. 使用转换函数将字符串转换为枚举值 现在,可以使用Color.from...
enum_member = string_to_enum(input_str) print(enum_member) 在上述示例中,MyEnum是一个枚举类型,其中的成员由auto()函数自动生成。然后,string_to_enum函数接受一个字符串参数,并在枚举类型中查找匹配的成员。如果找到了匹配的成员,它将返回该成员;否则,它将引发ValueError。 请注意,这只是一个简单的实现,适...
6. 将字符串转换为Enum类型 有时候,我们需要将一个字符串转换为Enum类型。我们可以使用Enum类的__members__属性来获取枚举类型中的所有枚举常量,并使用字符串作为键来访问它们。下面的代码示例展示了如何将字符串转换为Color枚举类型: color_str='red'color_enum=Color.__members__[color_str.upper()]print(color...
类型安全:使用StrEnum可以确保只有合法的枚举值被使用,减少了硬编码字符串常量的风险。 自动字符串转换:无论是在比较还是在打印时,StrEnum自动将枚举成员转换为字符串表示,确保代码更加简洁。 提高可读性:当你查看代码时,StrEnum成员的语义比普通的字符串常量更为明确。
class D(Enum): x = 1 y = 2 print(D.x) 现在打印的值是 D.x 相反,我希望打印枚举的值 1 可以做什么来实现这个功能? 我使用以下方法实现了访问 class D(Enum): x = 1 y = 2 def __str__(self): return '%s' % self.value 现在我可以做 ...
1. 定义Strenum类型 我们可以通过继承Enum类并使用unique装饰器来定义Strenum类型,示例如下: ```python from enum import Enum, unique unique class Color(Enum): RED = 'red' GREEN = 'green' BLUE = 'blue' ``` 在上面的示例中,我们定义了一个名为Color的Strenum类型,其中包含了三个常量:RED、GREEN和...
如果字符串不是1-1映射到枚举大小写时特别有用)是在Enum中添加一个staticmethod,例如:...
StrEnum 的实现很简单 class StrEnum(str, Enum): pass auto() 如果希望可以自定义 auto 的起始值的话,你可以这样 >>> class CustomAuto(Enum): ... a = 3 ... b = auto() ... c = auto() ... >>> CustomAuto.a <CustomAuto.a: 3> >>> CustomAuto.b <CustomAuto.b: 4> >>> Custo...
import enum class Test(enum.Enum): A = 1 B = 2 test_dict = {} for i in Test: test_dict[i] = 'value.' + str(i) print(test_dict) # 输出结果为 {<Test.A: 1>: 'value.Test.A', <Test.B: 2>: 'value.Test.B'} print(test_dict[Test.A]) # 输出结果为 value.Test.A ...