我想将一个类(引用)传递给另一个类,以便我可以调用由于类之间的组合关系而传递的类的方法。
这个最小的例子失败了:
cdef class Klass:
TheOtherKlass(self)
cdef class TheOtherKlass:
def __init__(self, Klass):
self.Klass = Klass
带
error undeclared name not builtin: self
为什么?
答案 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__