Articles of decorador

Forma preferida de definir propiedades en Python: decorador de propiedades o lambda?

¿Cuál es la forma preferida de definir las propiedades de clase en Python y por qué? ¿Está bien usar ambos en una clase? @property def total(self): return self.field_1 + self.field_2 o total = property(lambda self: self.field_1 + self.field_2)

El matraz golpeó al decorador antes de que se produzca una señal de petición.

Estoy usando Flask y el decorador before_request para enviar información sobre las solicitudes a un sistema de análisis. Ahora estoy tratando de crear un decorador que impida enviar estos eventos en algunas rutas. El problema con el que me estoy topando es hacer que llamen a mi decorador antes de que se dispare la señal […]

Implementando una propiedad de clase que preserva la cadena de documentos.

Tengo un descriptor que convierte un método en una propiedad en el nivel de clase: class classproperty(object): def __init__(self, getter): self.getter = getter self.__doc__ = getter.__doc__ def __get__(self, instance, owner): return self.getter(owner) Utilizado de esta manera: class A(object): @classproperty def test(cls): “docstring” return “Test” Sin embargo, ahora no puedo acceder al atributo __doc__ (lo cual […]

Python: pasar los valores predeterminados de los argumentos de la función a * args o ** kwargs

Considere el ejemplo: def decorator(func): def wrapper(*args, **kwargs): print(args, kwargs) func(*args, **kwargs) return wrapper @decorator def foo(x, y, z=0): pass foo(5, 5) Salida: (5, 5) {} ¿Por qué no (5, 5) {‘z’: 0} ? ¿Cómo pasar todos los valores predeterminados de la función foo a *args o **kwargs usando solo decorator (para funciones) o metaclase […]

Python decorator @func (). Error de syntax de atributo

Traté de encontrar una respuesta aquí, pero no pude. @obj.func # works @obj.func(**kwargs) #works @obj.func1(**kwargs).func2 #-> syntax error No entiendo por qué la tercera forma es un SyntaxError, me parece que no está violando ninguna syntax de python y está claro para mí qué quiere hacer el usuario (vea el ejemplo a continuación). Miré el […]

Combina dos decoradores de python en uno

Aquí hay dos decoradores que me gustaría combinar ya que son bastante similares, la diferencia es cómo se maneja un usuario no autenticado. Preferiría tener un solo decorador al que pueda llamar con una discusión. # Authentication decorator for routes # Will redirect to the login page if not authenticated def requireAuthentication(fn): def decorator(**kwargs): # […]

¿Cómo funcionan las funciones decoradas en matraz / python? (app.ruta)

Edición 2: entendí mal cómo trabajan los decoradores. El decorador se ejecuta incluso si no se llama a la función decorada (aunque es posible que no vea sus efectos). function = dec (function) sería una forma equivalente de mostrar lo que hace un decorador y, obviamente, en ese escenario, la función dec () se ejecuta […]

Pasando un parámetro al decorador en python.

¿Por qué este decorador con un parámetro no funciona? def decAny( f0 ): def wrapper( s0 ): return ” %s ” % ( any, f0(), any ) return wrapper @decAny( ‘xxx’ ) def test2(): return ‘test1XML’ print( test2() ) siempre me da un error que dice que “la cadena no es invocable” está intentando ejecutar […]

Método de establecimiento de decorador de propiedad no se llama

Estoy tratando de usar un método de propiedad para establecer el estado de una instancia de clase, con la siguiente definición de clase: class Result: def __init__(self,x=None,y=None): self.x = float(x) self.y = float(y) self._visible = False self._status = “You can’t see me” @property def visible(self): return self._visible @visible.setter def visible(self,value): if value == True: if […]

¿Python3 decorando condicionalmente?

¿Es posible decorar una función basada en una condición? a’la: if she.weight() == duck.weight(): @burn def witch(): pass Me pregunto si podría usarse la lógica (¿cuándo se llama a la witch ?) Para averiguar si decorar a la witch con @burn ? Si no, ¿es posible crear una condición dentro del decorador con el mismo […]