You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:55:01