3 Stimmen

Aufruf eines cdef in einer cdef-Klasse

Gibt es eine Möglichkeit, dies zu erreichen, ohne den cdef in cdef caller zu opfern? (auch keine Verwendung von cpdef)

from array import *
from numpy import *
cdef class Agents:
    cdef public caller(self):
        print "caller"
        A[1].called()

    cdef called(self):
        print "called"

A = [Agents() for i in range(2)]

def main():
    A[0].caller()

4voto

tito Punkte 12354

Bei Cython ist A[1] ein Python-Objekt. Wenn Sie trotzdem cdef verwenden möchten, verwenden Sie den automatischen Cast in Ihrem Aufrufer:

cdef public caller(self):
    cdef Agents agent
    print "caller"
    agent = A[1]
    agent.called()

Sie können mit dem Modus -a in cython überprüfen, ob Sie Python oder C für jede Codezeile verwenden. (cython -a yourfile.pyx -> erzeugt eine yourfile.html, die Sie durchsuchen und überprüfen können).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X