小编zol*_*zol的帖子

Cython:将扩展类型序列作为另一个扩展类型的属性,可以访问 cdef 方法

假设我定义了以下 Cython 类

\n\n
cdef 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 \n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我想定义另一个具有内核序列作为属性的扩展类型。就像是:

\n\n
cdef 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,这不起作用。首先我需要替换Kernel[:]object[:],否则我会收到以下错误gcc

\n\n
\xe2\x80\x98PyObject\xe2\x80\x99 …
Run Code Online (Sandbox Code Playgroud)

c++ python cython

6
推荐指数
0
解决办法
1058
查看次数

标签 统计

c++ ×1

cython ×1

python ×1