Ho visto solo esempi per l'impostazione del metodo __repr__
nelle definizioni di classe. È possibile modificare lo __repr__
per le funzioni nelle rispettive definizioni o dopo averle definite?È possibile modificare la replica di una funzione in python?
ho tentato senza successo ...
>>> def f():
pass
>>> f
<function f at 0x1026730c8>
>>> f.__repr__ = lambda: '<New repr>'
>>> f
<function __main__.f>
Utilizzare 'functools.wraps' per i decoratori per aggiornare il nome e la docstring delle funzioni decorate. – schlamar
Il problema è che 'print mul42 .__ name__' genererebbe un AttributeError che non è previsto per una funzione. Quindi sarebbe: 'return wraps (func) (reprwrapper (reprfun, func))' per risolvere il problema. – schlamar
@ ms4py In questo caso penso che 'update_wrapper' sia leggermente più appropriato/diretto. Ho modificato la classe wrapper in modo che faccia ciò nel suo costruttore. In questo modo l'aggiornamento avviene anche se si usa direttamente la classe invece di usare il decoratore 'withrepr'. – kwatford