您可以将Python类实例成员变量设置为Cython对象吗?

时间:2019-07-12 21:32:11

标签: python-3.x cython

可以将Python类实例成员变量设置为Cython对象吗?这可能吗?

如果不可能,我们是否可以将Python类实例成员变量设置为指向Cython对象的变量?

1 个答案:

答案 0 :(得分:0)

不清楚“类实例成员变量”和“ Cython对象”的含义。我认为这是您的意思:

  

您可以将纯Python类的成员变量设置为Cython pod install实例吗?

不。纯Python实例可以具有对其他Python实例的Python引用。在C层,这意味着cppclass可以包含__dict__指针,但不能包含指向不遵循PyObject*语义的结构的通用C或C ++指针。

在Cython中,您可以使用PyObject*关键字来创建不是cppclass变体(PyObject)的新C ++类。它们就像您在cdef cppclass CppClassDefinedInCython: ...文件中创建的C ++类。

Cython还允许您声明新的.h对象(class)。在幕后,这些是类的第一个字段集与所有cdef class PyObjectClassDefinedInCython: ... C结构具有相同的内存布局,并遵循纯C PyObject语义。如果您在该类中PyObject个字段,则可以使该类包含任意的C和C ++数据结构,这些结构可用于Cython生成的C或C ++代码。

如果您要使用Cython将C或C ++代码与Python混合使用,则需要查找一些教程,例如:https://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html