Widziałem tylko przykłady do ustawienia metody __repr__
w definicjach klas. Czy jest możliwa zmiana __repr__
dla funkcji w ich definicjach lub po ich zdefiniowaniu?Czy można zmienić funkcję repr w pythonie?
Mam próbowali bez powodzenia ...
>>> def f():
pass
>>> f
<function f at 0x1026730c8>
>>> f.__repr__ = lambda: '<New repr>'
>>> f
<function __main__.f>
Proszę użyć 'functools.wraps' dla dekoratorów, aby zaktualizować nazwę i docstring funkcji dekorowanych. – schlamar
Problem polega na tym, że 'print mul42 .__ name__' spowodowałby wzrost AttributeError, który nie jest oczekiwany dla funkcji. Więc byłoby to: 'return wraps (func) (reprwrapper (reprfun, func))', aby to naprawić. – schlamar
@ ms4py W tym przypadku myślę, że 'update_wrapper' jest nieco bardziej odpowiedni/bezpośredni. Zmodyfikowałem klasę opakowania tak, aby robiła to w swoim konstruktorze. W ten sposób aktualizacja dzieje się nawet wtedy, gdy używasz klasy bezpośrednio, zamiast korzystania z dekoratora 'withrepr'. – kwatford