Python C API中的静态变量

9 投票
1 回答
1626 浏览
提问于 2025-04-15 19:58

怎么把像这样的“静态”变量暴露出来呢?

class MyClass:
    X = 1
    Y = 2

通过C语言的API来实现?在PyTypeObject中,唯一看起来能用的变量是tp_members,但我没有看到PyMemberDef中有任何标志可以表示这个成员应该是每个类共享的,而不是每个实例独有的。

为了更清楚一点,因为这可能会影响答案,我想把一个C语言的枚举类型暴露给Python,这样枚举

enum MyFlags {
    Alpha = 0,
    Beta = 1
};

就可以在Python中像这样访问:

module.MyFlags.Alpha
module.MyFlags.Beta

1 个回答

12

只需要把它们放到这个类型的 tp_dict 中,比如可以用 PyDict_SetItemString 这个方法。

撰写回答