【发布时间】:2019-12-17 03:47:17
【问题描述】:
基本上,我在 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'.
【问题讨论】:
-
当您使用
__init__时,您会覆盖父类。见w3schools.com/python/python_inheritance.asp -
所以我将
super().__init__(fov)添加到孩子__init__(它也将fov 作为参数),但这不起作用。但是,向我通过 super 调用父方法的子方法添加一个方法确实有效。没有更好的方法解决这个问题吗?还尝试将BaseClass.__init__(self, fov)添加到子构造函数中,但这也不起作用。
标签: python inheritance cython