如何使用 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 以了解此用例 - 看起来它们会很好地满足您的需求。
我有以下代码
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 以了解此用例 - 看起来它们会很好地满足您的需求。