从Cython中的基类继承方法

2024-10-01 13:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下Cython类,它将C++类^ {< CD1>}(在^ {CD2>}文件中声明)作为类属性

cdef class CythonHolder:
    cdef CPP_Holder holder

    def __cinit__(self, int parameter):
        self.holder = CPP_Holder(parameter)

    def get_param(self):
        return self.holder.param

    [other methods]

因为我有一组类似的类(比如CythonHolder),它们都有get_param这样的方法,我想可以引入一个基类(或mixin)类,类似于传统的Python方法,允许这些holder类继承这些常用方法, i、 e

cdef class CommonMethods:
    def get_param(self):
        return self.holder.param 
    [other methods...]

cdef class CythonHolder(CommonMethods):
    cdef CPP_Holder holder

    def __cinit__(self, int parameter):
        self.holder = CPP_Holder(parameter)

不幸的是,它没有编译,因为错误抱怨self.holder没有在类CommonMethods中定义。作为Cython的新手,我知道cdef class的行为与传统的Python不同。但是,是否有一种机制允许实现这种简单的继承


Tags: 方法selfgetparameterparamdefcppcython