Hallo...
Wie muss das ganze aussehen, um selbst definierte Typen (Klassen) innerhalb der C-API zu erstellen?
Mit einem simplem PyObject_New scheint das ganze zwar zu funktionieren, allerdings wird weder die "__new__" Funktion noch die "__init__" Funktion aufgerufen.
Wäre nett wenn mir da jemand genaueres sagen könnte.
Wenn ich versuche die "__new__" Funktion selber aufzurufen, scheitere ich daran, die richtigen Argument für die "args" und "kw" bereit zu stellen...
Gruß & Danke
[CPython] Object erstellen
@Chrisber: Ich weiss nicht ob ich Deine Frage richtig verstehe -- auf der einen Seite willst Du Typen erstellen auf der anderen klingt es danach dass Du einen Typ hast und ein Exemplar davon erstellen möchtest!? Letzteres sollte mit PyInstance_New() gehen.
Ich bin jetzt zu faul den anderen Thread hier noch einmal zu suchen: PyObject_Hash() suchst Du wohl auch.
Ich bin jetzt zu faul den anderen Thread hier noch einmal zu suchen: PyObject_Hash() suchst Du wohl auch.

-
- User
- Beiträge: 221
- Registriert: Sonntag 1. Juni 2008, 09:08
Hi.
Ja, sowas meinte ich. Den Typen habe ich bereits erfolgreich erstellt (also man kann aus Python heraus schon selber Instanzen erstellen), aber ich brauche das eben auch für die C-API.
Merci!
Gruß
Ja, sowas meinte ich. Den Typen habe ich bereits erfolgreich erstellt (also man kann aus Python heraus schon selber Instanzen erstellen), aber ich brauche das eben auch für die C-API.
Merci!
Gruß
Grüßle.
-
- User
- Beiträge: 221
- Registriert: Sonntag 1. Juni 2008, 09:08
Hi.
Mal eine Frage: Wie mache ich es richtig das Objekt wieder zu zerstören?
Sollte ich manuell tp_del aufrufen?
Gruß
Mal eine Frage: Wie mache ich es richtig das Objekt wieder zu zerstören?
Sollte ich manuell tp_del aufrufen?
Gruß
Grüßle.
@Chrisber: Um Himmels willen -- was ist denn wenn noch jemand eine Referenz darauf hält!? Du musst Dich nur in Deinem Code korrekt um den Referenzzähler kümmern.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
`tp_del` löscht gar nix. Das ist der Destruktor, entspricht dem Python-`__del__`. Das wird nur dazu verwendet, Aufräumarbeiten und so weiter zu machen, und wird meist nicht benötigt. Du musst dich um das Aufräumen des Speichers (=Löschen von Objekten) gar nicht kümmern, wenn du mit den Refcounts alles richtig machst, kommt der GC schon irgendwann vorbei und schafft Platz.Chrisber hat geschrieben:Sollte ich manuell tp_del aufrufen?