如何在 C 中为 Python 设置静态 class 变量?
How do I set a static class variable in C for Python?
根据Python文档,在C中为Python实现一个class大致可以分为三个步骤:
- 定义对象(数据实现)
- 定义类型(行为包装器)
- 定义具体的行为,并将它们设置到相应的
tp_xx
个插槽中
对于new
函数,init
函数,实例成员,属性,甚至dealloc
,都可以找到一个slot 在 PyTypeObject
声明中,如 tp_new
、tp_init
、tp_members
、tp_methods
和 tp_dealloc
。但是没有像tp_statics
这样的插槽。
我应该在哪里声明静态变量,我应该在哪里设置它们?我搜索了互联网,但一无所获。谁能给我一些线索?
也许你应该看看 this question。
Python中没有static
关键字,class属性存储在class.__dict__
中。
@avram 提到了一个解决我问题的答案。
但是如果大家发现你的静态属性修改后没有更新,可以查看PyType_Modified函数。
根据Python文档,在C中为Python实现一个class大致可以分为三个步骤:
- 定义对象(数据实现)
- 定义类型(行为包装器)
- 定义具体的行为,并将它们设置到相应的
tp_xx
个插槽中
对于new
函数,init
函数,实例成员,属性,甚至dealloc
,都可以找到一个slot 在 PyTypeObject
声明中,如 tp_new
、tp_init
、tp_members
、tp_methods
和 tp_dealloc
。但是没有像tp_statics
这样的插槽。
我应该在哪里声明静态变量,我应该在哪里设置它们?我搜索了互联网,但一无所获。谁能给我一些线索?
也许你应该看看 this question。
Python中没有static
关键字,class属性存储在class.__dict__
中。
@avram 提到了一个解决我问题的答案。
但是如果大家发现你的静态属性修改后没有更新,可以查看PyType_Modified函数。