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

How to extract value of class of bytes enum using string name in 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 的对象不允许直接通过它们的字符串名称访问属性,正是因为不理解 data 应该被视为数据,并且代码已修复默认。因此,例如,它不同于 Javascript。然而,其中一个强大的优势是变量、方法和属性名称可以很容易地通过一个间接的方式进行内省——不像静态语言那样严格地保持数据和代码之间的这种分离。在这种情况下,唯一需要的间接方法是使用内置 getattr 函数按名称获取 class 属性:

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

我建议您检查 Python Enums 以了解此用例 - 看起来它们会很好地满足您的需求。