如何遍历ctypes类型的自定义枚举类的所有值
遍历继承ctypes.c_uint32的自定义枚举类常量
这类自定义枚举本质是将常量作为类属性直接定义,并未实现迭代器,因此无法直接遍历实例或类本身。可以通过筛选类的属性来获取所有常量名和对应值,以下是两种可行方法:
方法1:遍历类的__dict__属性
直接访问类的__dict__字典,过滤掉系统内置的特殊属性(以__开头),只保留自定义的数值常量:
import ctypes XSULONG32 = ctypes.c_uint32 class XS_INFO(XSULONG32): XS_CONST0 = 0 XS_CONST1 = 1 XS_CONST2 = 2 for name, value in XS_INFO.__dict__.items(): if not name.startswith('__') and isinstance(value, int): print(f"{name}: {value}")
方法2:使用dir()结合getattr()
通过dir()获取类的所有属性名,再用getattr()获取对应值,同样过滤特殊属性:
for name in dir(XS_INFO): if not name.startswith('__'): value = getattr(XS_INFO, name) if isinstance(value, int): print(f"{name}: {value}")
说明
如果SDK中的枚举常量存在非整数类型(此类情况极少),可以调整isinstance的判断条件,确保只筛选出目标常量。
内容的提问来源于stack exchange,提问作者planetmaker
相关产品推荐
相关产品推荐

