Python子类没有正确继承cython基类方法

2024-09-20 23:03:03 发布

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

基本上我在Cython中定义了一个基类,其基本结构如下。这在baseclass.pyx文件中

cdef class BaseClass:
    def __init__(self, fov):
        self.fov = fov

    cdef Vector3 MyMethod(self, parameter):
        cdef Vector3 transformed = Vector3()
        return transformed

我有一个python类继承了基本cython类,如下所示:

from baseclass import BaseClass

class Child(BaseClass):
    def __init__(self, near=1e-6, far=1e-6):
        self._near = near
        self._far = far

    # more methods here

最后,我创建了子类的一个实例,并尝试调用父方法:

temp = Child()
temp.MyMethod(parameter)

我得到一个错误:

'Child' has no attribute 'MyMethod'.

Tags: selfchildparameterinitdefclasstransformedfar
1条回答
网友
1楼 · 发布于 2024-09-20 23:03:03

您需要使用cpdef,如下所示:

cdef class BaseClass:
    def __init__(self, fov):
        self.fov = fov

    cpdef Vector3 MyMethod(self, parameter):
        cdef Vector3 transformed = Vector3()
        return transformed

cpdef关键字使Cython生成cdef函数和def函数。后者基本上只调用前者,但允许您从Python调用函数

相关问题 更多 >

    热门问题