2015-05-27 2 views
0

Я хочу передать класс (ссылку) другому классу, чтобы я мог вызывать методы класса, которые передаются из-за композиционного отношения между классами.Cython, передающий класс другому классу

Этот минимальный пример не удается:

cdef class Klass: 
    TheOtherKlass(self) 

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

с

error undeclared name not builtin: self 

Почему?

ответ

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__ 
Смежные вопросы