
Hallo Gruppe, Derzeit bin Ich dabei, in einer C-Extension Übergabeparameter zu extrahieren. Leider ist das Argument kein einfaches Int oder String, sondern eine Klasse, die von object abgeleitet ist und die passende Doku habe ich auch noch nicht erkannt/gefunden. class MyClass(object): def __init__(self): self.value1=1 self.value2=[2,3] self.value3=Subclass() Angefangen habe ich mit if (!PyArg_ParseTuple(args, "OO",&arg1, &arg2)) { return NULL; } Aber wie kann ich nun aus arg1 die value1, value2, und value3 extrahieren oder überhaupt herausfinden, welche keys es gibt ? Danke für Eure Hilfe

Guenther Sohler schrieb am 27.08.19 um 09:56:
Derzeit bin Ich dabei, in einer C-Extension Übergabeparameter zu extrahieren. Leider ist das Argument kein einfaches Int oder String, sondern eine Klasse, die von object abgeleitet ist und die passende Doku habe ich auch noch nicht erkannt/gefunden.
class MyClass(object): def __init__(self): self.value1=1 self.value2=[2,3] self.value3=Subclass()
Angefangen habe ich mit
if (!PyArg_ParseTuple(args, "OO",&arg1, &arg2)) { return NULL; }
Aber wie kann ich nun aus arg1 die value1, value2, und value3 extrahieren oder überhaupt herausfinden, welche keys es gibt ?
Ganz ehrlich: mach's nicht in C. Wenn du irgendwie noch Einfluss nehmen kannst auf die Wahl der Mittel in deinem Projekt, schreib es statt dessen in Cython. Das nimmt dir diesen ganzen Mist ab, generiert dafür auch noch schnelleren Code, und hilft dir außerdem dabei, dass dein Modul in zukünftigen Pythonversionen weiter funktioniert, ohne dass du am C-Code herumfrickeln musst. https://cython.org/ Da schreibst du dann einfach def mach_was_mit_myclass(arg1, arg2): print(dir(arg1)) return arg1.value1 + arg2.value1 und Cython generiert fröhlich den C-Code, der deine MyClass Objekte akzeptiert und verarbeitet. Stefan
participants (2)
-
Guenther Sohler
-
Stefan Behnel