Ich weiß, dass ich dynamisch so etwas wie, indem Sie eine Instanz-Methode zu einem Objekt hinzufügen:Dynamisches Hinzufügen @property in Python
import types
def my_method(self):
# logic of method
# ...
# instance is some instance of some class
instance.my_method = types.MethodType(my_method, instance)
Später ich anrufen kann instance.my_method()
und selbst korrekt gebunden sein und alles funktioniert.
Jetzt meine Frage: Wie genau das Gleiche zu tun, um das Verhalten zu erhalten, dass die neue Methode mit @property dekorieren würde geben?
würde ich so etwas wie erraten:
instance.my_method = types.MethodType(my_method, instance)
instance.my_method = property(instance.my_method)
Aber tun, dass instance.my_method
eine Eigenschaft Objekt zurückgibt.
@Bo Persson: Obwohl der Titel der Frage _python: Wie Eigenschaft dynamisch zu einer Klasse hinzufügen? _ Ist im Grunde das gleiche, ich glaube nicht, dass seine angenommene Antwort (einschließlich Add-on) die Frage anspricht allgemein. – martineau
@martineau - Niemand sonst schien das auch zu glauben, also ist die enge Abstimmung längst abgelaufen. –
@BoPersson: Ich stehe korrigiert, technisch die Info in der [added-on-Antwort] (http://stackoverflow.com/a/1355444/355230) auf diese Frage behandelt die allgemeine Frage. – martineau