Cython基础--Cython的类

1 Cython支持原生Python的类的定义

2 同时Cython也加入封装C++类的支持

3 按惯例,先上代码:

3.1 rect.pyx


3.2 Rectangle.h


3.3 Rectangle.cpp


 

3.4 Setup.py


 

3.5 Makefile



4 简单解释下:

4.1 rect.pyx

第一行:#distutils: language = c++

表示要生成一个cpp文件,而不是c文件

这里要注意的是这两个函数:__cinit__和__dealloc__

作用很简单,在__cinit__里进行C++相关变量的初始化,如C++对象的初始化

在__dealloc__可以释放C++对象

要注意的是,__cinit__不要调用Cython类的成员变量,因为这个时候Cython的类变量可能还没有初始化,会引发异常。

实际上,如果看一眼生成的cpp文件,就会发现,__cinit__是在调用PyTypeObject结构体的函数指针tp_new的时候被调用的,这也就可以解释为什么不能在__cinit__里调用类的成员变量了。

另外,Cython还加入了属性的支持,如本例中的property x0

4.2 其它几个文件这里就不用多解释了

5 官方文档

5.1 http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html

 

你可能感兴趣的:(C++,python,cython)