Articles of decorator

Jython @property SyntaxError: entrada ” no coincidente que espera CLASS

Intenté ejecutar este ejemplo desde los documentos en el intérprete de Jython: http://www.jython.org/docs/library/functions.html class C(object): def __init__(self): self._x = None @property def x(self): “””I’m the ‘x’ property.””” return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x Con solo ingresar las primeras 4 líneas (hasta e incluyendo @property ) se obtiene […]

Python Decorator con argumentos y acceso a la instancia de la clase

Tengo una clase definida de la siguiente manera: class SomeViewController(BaseViewController): @requires(‘id’, ‘param1’, ‘param2’) @ajaxGet def create(self): #do something here ¿Es posible escribir una función de decorador que: Toma una lista de argumentos, y posiblemente kwargs, y Accede a la instancia de la clase en la que se define el método de decoración. Por lo tanto, […]

Decorador Python en método de instancia

¿Alguien sabe qué está mal con este código? def paginated_instance_method(default_page_size=25): def wrap(func): @functools.wraps(func) def inner(self, page=1, page_size=default_page_size, *args, **kwargs): objects = func(self=self, *args, **kwargs) return _paginate(objects, page, page_size) return inner return wrap class Event(object): … @paginated_instance_method def get_attending_users(self, *args, **kwargs): return User.objects.filter(pk__in=self.attending_list) Obtuve el siguiente error: Traceback (most recent call last): File “”, line 1, […]

Django Signal a través de Decorator en el método de modelo?

Estoy tratando de hacer algo como estos decoradores de señales propuestos . Además de tener un decorador que conecta el método decorado a una señal (con el remitente de la señal como argumento al decorador), me gustaría usar el decorador en los métodos de clase. Me gustaría usar el decorador así: class ModelA(Model): @connect.post_save(ModelB) @classmethod […]

Compruebe si una función utiliza @classmethod

TL; DR ¿Cómo puedo saber si una función se definió usando @classmethod o algo con el mismo efecto? Mi problema Para implementar un decorador de clase me gustaría verificar si un método toma a la clase como su primer argumento, por ejemplo, como se logra a través de @classmethod def function(cls, …): Encontré una solución […]

Prácticas recomendadas para decoradores de Python, utilizando una clase frente a una función

Como lo he entendido, hay dos formas de hacer un decorador de Python, ya sea usar el __call__ de una clase o definir y llamar a una función como decorador. ¿Cuáles son las ventajas / desventajas de estos métodos? ¿Hay un método preferido? Ejemplo 1 class dec1(object): def __init__(self, f): self.f = f def __call__(self): […]

¿Para qué son útiles las metaclases de Python?

¿Qué se puede hacer con las metaclases que no pueden ser de otra manera? Alex Martelli dijo que hay tareas que no se pueden lograr sin las metaclases. ¿Qué son las metaclases de Python y los decoradores de clase que me gustaría saber cuáles son?

Compruebe si una función fue llamada como decorador

En el siguiente ejemplo mínimo, decorate se llama dos veces. Primero usando @decorate , segundo por función normal call decorate(bar) . def decorate(func): print(func.__name__) return func @decorate def bar(): pass decorate(bar) ¿Es posible ver dentro de decorate si la llamada se invocó usando @decorate o como una llamada de función normal?

Decorador de la propiedad clase perezosa

Tengo un modelo de django que necesita hacer algún procesamiento refiriendo el modelo de usuario personalizado. No puedo trabajar con la clase de este modelo en el momento de carga de la clase porque se desconoce el orden de carga de las clases. Así que necesito agregar algunos atributos de clase en tiempo de ejecución, […]

¿Cómo hago para que los decoradores basados ​​en clases trabajen con métodos de ejemplo?

Hay dos formas de invocar a los decoradores: 1) pasando la función / clase del decorador class Foo(object): def __init__(self): self.x = 1 @foo_decorator def bar(self, x): return self.x + x o 2) pasando el valor de retorno de la función decoradora / instancia de clase. class Foo(object): def __init__(self): self.x = 1 @foo_decorator(“args”) def […]