Articles of decorador de

Accediendo a un decorador en una clase padre desde el niño en Python

¿Cómo se puede acceder a un decorador desde una clase base en un niño? Supuse (erróneamente) que el ffg. trabajaría: class baseclass(object): def __init__(self): print ‘hey this is the base’ def _deco(func): def wrapper(*arg): res = func(*arg) print ‘I\’ma decorator. This is fabulous, but that colour, so last season sweetiedarling’ return res return wrapper @_deco […]

Cómo crear un decorador para la inicialización perezosa de una propiedad

Quiero crear un decorador que funcione como una propiedad, solo llama a la función decorada solo una vez, y en las llamadas subsiguientes siempre devuelve el resultado de la primera llamada. Un ejemplo: def SomeClass(object): @LazilyInitializedProperty def foo(self): print “Now initializing” return 5 >>> x = SomeClass() >>> x.foo Now initializing 5 >>> x.foo 5 […]

¿Cuál es la forma correcta de poner una cadena de documentos en la propiedad de Python?

¿Debo hacer varias cadenas de documentación, o solo una (y dónde debería colocarla)? @property def x(self): return 0 @x.setter def x(self, values): pass Veo que la property() acepta un argumento doc.

decorar decoradores: tratar de entender mi mente

Estoy tratando de entender a los decoradores de decoración, y quería probar lo siguiente: Digamos que tengo dos decoradores y los aplico a la función hola: def wrap(f): def wrapper(): return ” “.join(f()) return wrapper def upper(f): def uppercase(*args, **kargs): a,b = f(*args, **kargs) return a.upper(), b.upper() return uppercase @wrap @upper def hello(): return “hello”,”world” […]

Decorador al curry en python.

Estoy tratando de escribir un decorador de curry en python, y creo que tengo una idea general, pero todavía tengo algunos casos que no están funcionando bien … def curry(fun): cache = [] numargs = fun.func_code.co_argcount def new_fun(*args, **kwargs): print args print kwargs cache.extend(list(args)) if len(cache) >= numargs: # easier to do it explicitly than […]

Decoradores contra herencia

¿Cómo se decide entre usar decoradores y la herencia cuando ambos son posibles? Por ejemplo, este problema tiene dos soluciones. Estoy particularmente interesado en Python.

Un decorador que perfila una llamada de método y registra el resultado del perfilado.

Quiero crear un decorador que perfile un método y registre el resultado. ¿Cómo se puede hacer esto?

¿Cuál es la diferencia entre los decoradores de Python y el patrón de decorador?

¿Cuál es la diferencia entre los “decoradores de Python” y el “patrón decorador”? ¿Cuándo debo usar decoradores de Python y cuándo debo usar el patrón de decorador? Estoy buscando ejemplos de decoradores de Python y el patrón de decorador logrando lo mismo. @AceptoAceptado Sé que la respuesta de Jakob Bowyer es válida. Sin embargo, es […]

Función de enlace de nombre local desde un ámbito externo

Necesito una forma de “inyectar” nombres en una función desde un bloque de código externo, para que sean accesibles localmente y no necesiten ser manejados específicamente por el código de la función (definido como parámetros de función, cargado desde *args etc.) El escenario simplificado: proporciona un marco dentro del cual los usuarios pueden definir (con […]

Escribir un decorador de clase que aplique un decorador a todos los métodos.

Estoy tratando de escribir un decorador de clase que aplique un decorador a todos los métodos de la clase: import inspect def decorate_func(func): def wrapper(*args, **kwargs): print “before” ret = func(*args, **kwargs) print “after” return ret for attr in “__module__”, “__name__”, “__doc__”: setattr(wrapper, attr, getattr(func, attr)) return wrapper def decorate_class(cls): for name, meth in inspect.getmembers(cls, […]