在C++中的python类中指定静态变量

specify static variables in a python class in C++

本文关键字:静态 变量 C++ 中的 python      更新时间:2023-10-16

在CPython C++中,如何在python类中指定静态方法或变量?

在PyTypeObject结构中,tp_getset、tp_methods和tp_members似乎都假定了类的一个实例。

非常感谢,抢劫

静态方法和类方法可以在tp_methods中通过将METH_STATICMETH_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中。