Sì, probabilmente lo fa, ma probabilmente mantiene un riferimento alla definizione get(self)
originale.
I decoratori Python non sono altro che un oggetto chiamabile (una funzione o un'istanza di classe con un metodo __call__
). Qualsiasi che callable restituisce viene utilizzato come definizione per la funzione decorata.
Se definisco un semplice decoratore no-op come questo, ciò significa che sostituisco l'originale con .... l'originale:
def noopDecorator(func):
return func
Il simbolo @
utilizzato per i decoratori è zucchero sintattico, puoi anche scriverlo come:
class AuthHandler(BaseHandler, tornado.auth.GoogleMixin):
def get(self):
if self.get_argument("openid.mode", None):
self.get_authenticated_user(self.async_callback(self._on_auth))
return
self.authenticate_redirect()
get = tornado.web.asynchronous(get)
Nel caso del tornado asynchronous
decorator, il decoratore probabilmente restituisce un gestore differito, per gestire la funzione decorata in modo asincrono, mantenendo te, il programmatore di un'applicazione basata su tornado, dal dover ricordare la complessità di come fallo più e più volte In breve, ti concentriamo invece sui dettagli della tua applicazione.