wiem, że można dynamicznie dodać metodę instancji do obiektu robiąc coś takiego:Dynamicznie dodając @property w Pythonie
import types
def my_method(self):
# logic of method
# ...
# instance is some instance of some class
instance.my_method = types.MethodType(my_method, instance)
Później mogę zadzwonić instance.my_method()
i samo będzie prawidłowo związane i wszystko działa.
Teraz, moje pytanie: jak zrobić dokładnie to samo, aby uzyskać zachowanie, które dałoby dekorowanie nowej metody za pomocą @property?
Przypuszczam coś takiego:
instance.my_method = types.MethodType(my_method, instance)
instance.my_method = property(instance.my_method)
Ale robi to instance.my_method
zwraca obiekt nieruchomości.
@Bo Persson: Mimo że tytuł pytania _python: Jak dynamicznie dodawać własność do klasy? _ Jest zasadniczo taki sam, nie wierzę, że jego akceptowana odpowiedź (w tym dodatek do niej) rozwiązuje problem ogólnie. – martineau
@martineau - Nikt inny też w to nie wierzył, więc bliskie głosowanie wygasło dawno temu. –
@BoPersson: Poprawiam się, technicznie informacje z [dodanej odpowiedzi] (http://stackoverflow.com/a/1355444/355230) na to pytanie są odpowiedzią na ogólne pytanie. – martineau