Python scheint einige Einschränkungen bezüglich der Instanzmethoden zu haben.
Das ist problematisch für mich, weil ich an einem sehr objektorientierten Projekt arbeite, in dem ich Instanzmethoden referenziere und beide Deepcopying verwenden und Beizen. Das Beizen geschieht meist durch den Multiprocessing-Mechanismus.
Was wäre ein guter Weg, dies zu lösen? Ich habe eine hässliche Umgehung des Kopierproblems gemacht, aber Ich suche nach einer besseren Lösung für beide Probleme.
Hat jemand irgendwelche Vorschläge?
Aktualisierung:
Mein Anwendungsfall: Ich habe ein kleines Ereignissystem. Jedes Ereignis hat ein .action
-Attribut, das auf eine Funktion zeigt, die es auslösen soll, und manchmal ist diese Funktion eine Instanzmethode eines Objekts.
Sie können dies möglicherweise mithilfe von copy_reg.pickle
tun. In Python 2.6:
Dies speichert nicht den Code der Methode, sondern nur dessen Namen; aber das wird im allgemeinen Fall richtig funktionieren.
Dies macht sowohl Beizen als auch Kopieren möglich!
REST - Repräsentationsstatusübertragung. Sende einfach State, nicht Methoden.
Um ein Objekt X von A nach B zu übertragen, machen wir das.
A kodiere den Zustand von X in einigen handliche, einfach zu parsen Notation. JSON ist beliebt.
A sendet den JSON-Text an B.
B dekodiert den Zustand von X-Form JSON Notation, X rekonstruierend.
B muss die Klassendefinitionen für die Klasse von X haben, damit dies funktioniert. B muss alle Funktionen und andere Klassendefinitionen haben, von denen die Klasse von X abhängt. Kurz gesagt, beide A und B haben alle Definitionen. Nur eine Darstellung des Objektstatus wird verschoben herum.
Siehe einen Artikel über REST.
picken Sie die Instanz und greifen Sie nach dem Entpacken auf die Methode zu. Das Auswählen einer Methode einer Instanz ist nicht sinnvoll, da sie auf der Instanz beruht. Wenn nicht, schreibe es als unabhängige Funktion.
%Vor%Tags und Links python oop copy instance-method