Hi.
Ich habe es nun hingekriegt. Problem war, dass ich (durch einige Umstände im Code) die Klasse immer vorm Aufrufen gelöscht habe -.- (ja, ich schäme mich!)
Dennoch habe ich jetzt ein weiteres Problem: Wenn ich einen Callback einer statischen Funktion speichere (also den PyObject-Pointer), funktioniert das wunderbar (ich kann ihn später problemlos wiederfinden). Jedoch funktioniert das ganze nicht, wenn ich einen Callback auf eine Memberfunktion speichern will. Beispiel:
Code: Alles auswählen
myplugin.bla.hook("xblub", xblub) # Adresse von xblub z.B. 0x10a7bbf0
myplugin.bla.hook("instanceblub", instance.blub) # Adresse von instance.blub HIER z.B. 0x1029b1e8
# direkt danach
myplugin.bla.unhook("xblub", xblub) # Adresse von xblub ist immernoch 0x10a7bbf0 - kann ich als problemlos wiederfinden
myplugin.bla.unhook("instanceblub", instance.blub) # Adresse von instance.blub hat sich geändert: 0x1029b210
Problem ist nun natürlich, dass ich das nicht mehr wiederfinden kann, dementsprechend den Hook nicht entfernen kann - und das resultiert später in einem Fehler.
Hat da jemand eine Idee, wie ich das Problem lösen könnte? Gibt es da vielleicht so etwas wie PyInstance_IsInstance(<adresse vom hook>, <adresse vom unhook>) oder so?
Edit: In der API steht bei PyList_Append leider nichts davon, ob es einen neuen Reference Count erstellt oder nicht. Logisch wäre es natürlich. Was meint ihr dazu?
Gruß
Grüßle.