Je sais que je peux ajouter dynamiquement une méthode d'instance à un objet en faisant quelque chose comme:Dynamiquement ajouter @property en 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)
Plus tard je peux appeler instance.my_method()
et l'auto sera correctement lié et tout fonctionne.
Maintenant, ma question: comment faire exactement la même chose pour obtenir le comportement que la décoration de la nouvelle méthode avec @property donnerait?
Je suppose que quelque chose comme:
instance.my_method = types.MethodType(my_method, instance)
instance.my_method = property(instance.my_method)
Mais, en faisant que instance.my_method
retourne un objet de propriété.
@Bo Persson: Bien que le titre de la question _python: Comment ajouter dynamiquement une propriété à une classe? _ Est fondamentalement le même, je ne crois pas que sa réponse acceptée (y compris son add-on) aborde la question généralement. – martineau
@martineau - Personne d'autre ne semblait le croire non plus, alors le vote serré a expiré il y a longtemps. –
@BoPersson: Je suis corrigé, techniquement l'information dans [la réponse ajoutée] (http://stackoverflow.com/a/1355444/355230) à cette question répond à la question générale. – martineau