Articles of decorador de

Decorador Python con multiprocesamiento falla.

Me gustaría usar un decorador en una función que luego pasaré a un grupo de multiprocesamiento. Sin embargo, el código falla con “PicklingError: Can’t pickle: attribute __builtin__ __builtin__ __builtin__ ha fallado”. No entiendo muy bien por qué falla aquí. Estoy seguro de que es algo simple, pero no puedo encontrarlo. A continuación se muestra un […]

Use un Descriptor (EDIT: ¿No es un decorador único) para atributos múltiples?

Python 2.5.4. Bastante nuevo en Python, completamente nuevo para los decoradores a partir de anoche. Si tengo una clase con múltiples atributos booleanos: class Foo(object): _bool1 = True _bool2 = True _bool3 = True #et cetera def __init__(): self._bool1 = True self._bool2 = False self._bool3 = True #et cetera ¿Hay alguna manera de usar un […]

Memorice los decoradores que no logren memorizar (cuando no use la syntax del decorador)

Tengo un decorador de memoizer simple: def funcmemo(f): memo = {} @wraps(f) def wrapper(*args): if args in memo: return memo[args] else: temp = f(*args) print “memoizing: “, args, temp memo[args] = temp return temp return wrapper Ahora, cuando lo uso a través del token “@”, @funcmemo def fib(n): print “fib called with:”, n if n […]

Decorar una clase para monitorear cambios de atributos

Quiero tener clases que envíen notificaciones automáticamente a los suscriptores siempre que cambie uno de sus atributos. Así que si quisiera escribir este código: @ChangeMonitor class ChangingClass(object): def __init__(self, x): self.x = x changer = ChangingClass(5) print(“Going to change x.”) changer.x = 6 print(“Going to not change x.”) changer.x = 6 print(“End of program”) La […]

En Python, decora dos métodos con el mismo nombre para distinguirlos.

Estoy escribiendo un marco para ser utilizado por personas que conocen algo de python. Me decidí por alguna syntax, y para mí y para ellos tiene sentido usar algo como esto, donde Base es la clase Base que implementa el marco. class A(Base): @decorator1 @decorator2 @decorator3 def f(self): pass @decorator4 def f(self): pass @decorator5 def […]

Ejecución de la función decoradora Python.

Tengo debajo del código de demostración del decorador. Si lo ejecuto sin llamar explícitamente greet función de greet , está ejecutando print statement de print dentro de la función de decorador y genera un Inside decorator . No puedo entender este comportamiento de decorador. ¿Cómo se llama el time_decorator incluso si no he llamado la […]

decoradores alternativos

¿Cuál es la mejor manera de encender y apagar a los decoradores sin ir a cada decoración y comentarlos? Digamos que tienes un decorador de benchmarking: # deco.py def benchmark(func): def decorator(): # fancy benchmarking return decorator y en tu módulo algo como: # mymodule.py from deco import benchmark class foo(object): @benchmark def f(): # […]

Cómo agrupar decoradores en Python

En Flask estoy usando un conjunto de decoradores para cada ruta, pero el código es “feo”: @app.route(“/first”) @auth.login_required @crossdomain(origin=’*’) @nocache def first_page: …. @app.route(“/second”) @auth.login_required @crossdomain(origin=’*’) @nocache def second_page: …. Preferiría tener una statement que los agrupe a todos con un solo decorador: @nice_decorator(“/first”) def first_page: …. @nice_decorator(“/second”) def second_page: …. Intenté seguir la respuesta […]

Crear decorador que pueda ver el método de clase actual.

¿Puedes crear un decorador dentro de una clase que vea los métodos y las variables de las clases? El decorador aquí no ve: self.longcondition () class Foo: def __init__(self, name): self.name = name # decorator that will see the self.longcondition ??? class canRun(object): def __init__(self, f): self.f = f def __call__(self, *args): if self.longcondition(): # […]

Python – decorator – intenta acceder a la clase padre de un método

Esto no funciona: def register_method(name=None): def decorator(method): # The next line assumes the decorated method is bound (which of course it isn’t at this point) cls = method.im_class cls.my_attr = ‘FOO BAR’ def wrapper(*args, **kwargs): method(*args, **kwargs) return wrapper return decorator Los decoradores son como la película Inception; Cuanto más niveles vayas, más confusos serán. […]