sé que puedo añadir dinámicamente un método de instancia de un objeto haciendo algo como:dinámicamente añadiendo @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)
Más tarde me puede llamar instance.my_method()
y auto será enlazado correctamente y todo funciona.
Ahora, mi pregunta: ¿cómo hacer exactamente lo mismo para obtener el comportamiento que la decoración del nuevo método con @property daría?
Conjeturaría algo como:
instance.my_method = types.MethodType(my_method, instance)
instance.my_method = property(instance.my_method)
Pero, haciendo que instance.my_method
devuelve un objeto de propiedad.
@Bo Persson: Aunque el título de la pregunta _python: ¿Cómo agregar propiedades a una clase dinámicamente? _ Es básicamente el mismo, no creo que su respuesta aceptada (incluido el complemento) aborde la pregunta en general. – martineau
@martineau - Nadie parecía creer eso tampoco, por lo que el voto cercano ha expirado hace mucho tiempo. –
@BoPersson: Estoy corregido, técnicamente la información en la [respuesta agregada] (http://stackoverflow.com/a/1355444/355230) a esa pregunta se dirige a la pregunta general. – martineau