假设我定义了以下 Cython 类
\n\ncdef class Kernel:\n cdef readonly double a\n\n def __init__(self, double a):\n self.a = a\n\n cdef public double GetValue(self, double t):\n return self.a*t \nRun Code Online (Sandbox Code Playgroud)\n\n现在我想定义另一个具有内核序列作为属性的扩展类型。就像是:
\n\ncdef class Model:\n cdef readonly Kernel[:] kernels\n cdef unsigned int n_kernels\n\n def __init__(self, Kernel[:] ker):\n self.kernels = ker\n self.n_kernels = ker.shape[0]\n\n cdef double Run(self, double t):\n\n cdef int i\n cdef double out=0.0\n\n for i in range(self.n_kernels):\n out += self.kernels[i].GetValue(t)\n\n return out\nRun Code Online (Sandbox Code Playgroud)\n\n然而,这不起作用。首先我需要替换Kernel[:]为object[:],否则我会收到以下错误gcc
\xe2\x80\x98PyObject\xe2\x80\x99 …Run Code Online (Sandbox Code Playgroud)