如何在Python中使用字符串名称提取字节类枚举的值



我有以下代码

class LogLevels:
level_0 = b"0"
level_1 = b"1"
level_2 = b"2"
level_3 = b"3"
level_4 = b"4"
level_5 = b"5"
level_6 = b"6"
level_7 = b"7"
level_8 = b"8"

non_default_log_levels = ("level_4", "level_5", "level_6")
for log_level in non_default_log_levels:
print(log_level)
print(LogLevels[log_level])

我需要找到一种方法,使用字符串名称提取每个枚举的值

预期结果:

level_4
b"4"
level_5
b"5"
level_6
b"6"

Python的对象不允许通过其字符串名称直接访问属性,这正是因为不需要将数据视为数据,并且默认情况下代码是固定的。因此,例如,在这一点上,它与Javascript不同。然而,最大的优势之一是,变量、方法和属性名称可以很容易地用一个间接方法进行内省,这与静态语言过于严格地将数据和代码分隔开来不同。在这种情况下,唯一需要的间接方法是使用内置的getattr函数按名称获取类属性:

for log_level in non_default_log_levels:
print(log_level)
print(getattr(LogLevels, log_level))

最后,我建议您检查这个用例的Python枚举——看起来它们非常适合您的需求。

最新更新