Articles of decorador de

Memorice una función para que no se restablezca cuando vuelvo a ejecutar el archivo en Python

A menudo hago trabajo interactivo en Python que involucra algunas operaciones costosas que no quiero repetir a menudo. Generalmente estoy ejecutando cualquier archivo Python en el que estoy trabajando con frecuencia. Si escribo: import functools32 @functools32.lru_cache() def square(x): print “Squaring”, x return x*x Me sale este comportamiento: >>> square(10) Squaring 10 100 >>> square(10) 100 […]

¿Es posible aplicar mis propios decoradores a los métodos incorporados en Python?

Acabo de encontrarme con los decoradores de Python. Solo por interés, ¿puede aplicar su propio decorador a un método de objeto incorporado de alguna manera? Digamos que quería aplicar esto: def remove_empty(fn): def filtered(): return filter(lambda x: x != ”, fn()) return filtered A esto: some_string.split(‘\n’) con el fin de eliminar las cadenas vacías. ¿Es […]

Cómo omitir o ignorar a los decoradores de python

Hay una función que está envuelta por un decorador que devuelve el resultado de la función como HTML. Me gustaría llamar a esa función sin el envoltorio HTML del decorador. ¿Es eso posible? Ejemplo: class a: @HTMLwrapper def returnStuff(input): return awesome_dict def callStuff(): # here I want to call returnStuff without the @HTMLwrapper, # i […]

Refrescar decorador

Estoy tratando de escribir un decorador que se ‘refresca’ después de ser llamado, pero donde la actualización solo ocurre una vez que sale la última función. Aquí hay un ejemplo: @auto_refresh def a(): print “In a” @auto_refresh def b(): print “In b” a() Si se llama a a() , quiero que la función de actualización […]

Haciendo ‘isinstance’ trabajar con decoradores

¿Cómo funciona isinstance función Python isinstance ? ¿Hay algo que pueda hacer para alterar sus resultados, como definir una función especial dentro de una clase o algo? Aquí está mi caso de uso: class Decorator: def __init__(self, decorated): self._decorated = decorated def __call__(self): return self._decorated() @Decorator class Foo: pass f = Foo() # How can […]

Decoradores de la statement

Tenemos un código que se ve así: from third_party_library import foo for n in range(3): try: foo(args) break except: print “Retry %i / 3” % n Me gustaría usar un decorador, permitiendo que nuestro código sea más sencillo, con este aspecto: from third_party_library import foo @retry(3) foo(args) Esto da un error de syntax. ¿Me estoy […]

Python: decorador variable estático

Me gustaría crear un decorador como el de abajo, pero parece que no puedo pensar en una implementación que funcione. Estoy empezando a pensar que no es posible, pero pensé que les preguntaría a ustedes primero. Me doy cuenta de que hay varias otras formas de crear variables estáticas en Python, pero me parecen feas. […]

Método de sobrecarga decorador

Estoy tratando de escribir un decorador que proporcione a Python una funcionalidad de sobrecarga de métodos, similar a la que se menciona en PEP 3124 . El decorador que escribí funciona muy bien para las funciones normales, pero no puedo hacer que funcione con los métodos de una clase. Aquí está el decorador: class Overload(object): […]

Python unittest: no se puede llamar prueba decorada

Tengo una suite de pruebas bastante grande y decoré algunas de las funciones test_ *. Ahora no puedo llamarlos por ./test.py MySqlTestCase.test_foo_double , python3.2 se queja de que: ValueError: no such test method in : result . Mi código de decorador se ve así: def procedure_test(procedure_name, arguments_count, returns): ”’Decorator for procedure tests, that simplifies testing […]

Decoradores y en clase.

¿Hay alguna forma de escribir decoradores dentro de una estructura de clase que anide bien? Por ejemplo, esto funciona bien sin clases: def wrap1(func): def loc(*args,**kwargs): print 1 return func(*args,**kwargs) return loc def wrap2(func): def loc(*args,**kwargs): print 2 return func(*args,**kwargs) return loc def wrap3(func): def loc(*args,**kwargs): print 3 return func(*args,**kwargs) return loc def merger(func): return […]