可以将Python类实例成员变量设置为Cython对象吗?这可能吗?
如果不可能,我们是否可以将Python类实例成员变量设置为指向Cython对象的变量?
答案 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