Red de conocimiento informático - Material del sitio web - Cómo utilizar decoradores para registrar funciones de devolución de llamada en Python

Cómo utilizar decoradores para registrar funciones de devolución de llamada en Python

Siempre supe que los decoradores pueden mejorar un método existente. Python también proporciona métodos de anotación, que son muy útiles, pero cuando miré el paquete de extensión de flask login, descubrí que los decoradores también pueden implementar devoluciones de llamada. Función de registro de función.

El inicio de sesión de Flask registra la función de devolución de llamada a través del siguiente decorador. Cuando no hay un ID de sesión, el usuario ingresa a la sesión a través de la función especificada por el decorador.

>@login_manager.user_loader

A continuación se escribe un ejemplo de prueba simple para demostrar esta función.

importar tiempo

importar funciones

clase Test():

#/**feature llamará a callback(), pero no existe una definición real de callback**/

def feature(self) en Test:

self.callback()

def decorar(self, func):

self.callback=func

retorno func

p>

test = Test()

#/**Registrar foo como función de devolución de llamada*//

@test.decorate

def foo ():

print 'in foo()'

#/**La función de llamada activará la función de devolución de llamada**/

prueba. característica()