我有兴趣在Python和Cython代码之间传递数据,以便可以从C和没有GIL访问数据。我正在考虑使用数据类(因为py3.7),名为元组(自py3.6以来具有良好的定义语法)或Cython的扩展类型(cdef classess)来实现此目的。
不幸的是,数据类和命名元组似乎像Cython中的泛型对象一样处理,没有任何编译成C的支持。
可以使用Cython扩展类型(cdef类),但与数据类相比它们有许多缺点,最重要的是你必须使用样板代码实现__init__
来设置所有的类属性,对吗?
我问过Cython开发人员,他们为扩展类型(cdef类)开发了一个实现@dataclass
的功能请求:https://github.com/cython/cython/issues/2903。所以希望他们很快就会得到Cython的支持。