Cython将一个类传递给另一个类

时间:2015-05-27 13:56:28

标签: cython

我想将一个类(引用)传递给另一个类,以便我可以调用由于类之间的组合关系而传递的类的方法。

这个最小的例子失败了:

cdef class Klass:
    TheOtherKlass(self)

cdef class TheOtherKlass:
    def __init__(self, Klass):
        self.Klass = Klass

error undeclared name not builtin: self

为什么?

1 个答案:

答案 0 :(得分:0)

self隐式地是传递给类方法的第一个参数。

您的声明: TheOtherKlass(self) 不在方法内部,因此self在该范围内未定义。

在下面的示例中,您可以看到可以使用TheOtherKlass(self)作为参数调用构造函数self,只要您在类方法中。

cdef class TheOtherKlass:
    def __init__(self, Klass):
        self.Klass = Klass


cdef class Klass:

    cdef TheOtherKlass myklass

    def __init__(self):               #Here self is passed as the first argument
        myklass = TheOtherKlass(self) #So it exists within the scope of __init__