Se sto usando un modulo/classe su cui non ho controllo, come potrei decorare uno dei metodi?Come posso aggiungere un decoratore a un metodo di oggetto esistente?
Capisco che posso: my_decorate_method(target_method)()
ma sto cercando di farlo accadere ovunque target_method
viene chiamato senza dover fare una ricerca/sostituzione.
È possibile?
Questo era il modo originale in cui ho esaminato il problema, ma era un sacco di lavoro. Il metodo nella risposta accettata è utile per sapere - anche se non è il modo più corretto di fare le cose. –
Non è una questione di "più corretto" tanto quanto una questione di "leggibile" e "gestibile". Il tuo caso d'uso è il motivo * esatto * per cui le lingue OO hanno ereditarietà. Può sembrare molto lavoro, ma è quello che ogni altro programmatore si aspetta di vedere. A lungo termine, i decoratori dinamici e divertenti sono una responsabilità. La semplice eredità antica non diventerà una responsabilità. –