在C++中的python类中指定静态变量
specify static variables in a python class in C++
在CPython C++中,如何在python类中指定静态方法或变量?
在PyTypeObject结构中,tp_getset、tp_methods和tp_members似乎都假定了类的一个实例。
非常感谢,抢劫
静态方法和类方法可以在tp_methods
中通过将METH_STATIC
或METH_CLASS
添加到PyMethodDef
结构的ml_flags
字段来定义。这相当于@staticmethod
和@classmethod
装饰器。
该方法的第一个参数,通常是实例指针,对于静态方法为NULL
,对于类方法为PyTypeObject*
。
http://docs.python.org/c-api/structures.html#PyMethodDef
在调用PyType_Ready()
(在模块初始化函数中(之前,可以通过将tp_dict
设置为具有这些属性的字典来添加类属性。或者,tp_dict
可以保留为NULL
,在这种情况下,PyType_Ready()
将为您创建dict。然后可以将属性添加到该dict中。
http://docs.python.org/c-api/typeobj.html#tp_dict
计算类属性需要一个描述符类,与Python中的一样。描述符的一个实例应该像其他类属性一样添加到tp_dict
中。
相关文章:
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 模板基类中的静态变量
- 类和静态变量
- 不同作用域中的静态变量和全局变量
- 静态变量声明和定义
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在类中继承静态变量?
- "local scope"中的 C++ 初始化静态变量
- 使用静态变量的递归调用的不同输出
- 复制文件流C++静态变量
- 跨模板化函数编译的静态变量
- C++编译器是否优化了顺序静态变量读取?
- C++,每个循环初始化一个新的静态变量
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 这些语句是否等效(静态变量、常量变量和泛型)
- 程序如何知道静态变量是否需要初始化?
- 类外的静态变量实例化
- 无法解析静态变量
- 函数局部静态变量:从性能角度来看的优点/缺点
- 访问从 CPP 文件到其他头文件的静态变量