Articles of decorator

Python establece la cadena de documentación y obtiene el nombre del método del método de clase generado dinámicamente

Intento obtener / establecer el nombre y la cadena de documentación de los métodos de clase creados dinámicamente de la siguiente manera, pero tengo problemas para averiguar exactamente cómo hacerlo: import sys import inspect class test(object): pass @classmethod def genericFunc(cls, **kwargs): print “function:”, (inspect.stack()[0][3]) print “kwargs:”, kwargs function_list = [‘myF1’, ‘myF2’] for func in function_list: […]

Creando un objeto con nombre doble usando solo un subconjunto de argumentos pasados

Estoy extrayendo filas de una base de datos MySQL como diccionarios (usando SSDictCursor) y estoy procesando un poco, usando el siguiente enfoque: from collections import namedtuple class Foo(namedtuple(‘Foo’, [‘id’, ‘name’, ‘age’])): __slots__ = () def __init__(self, *args): super(Foo, self).__init__(self, *args) # …some class methods below here class Bar(namedtuple(‘Bar’, [‘id’, ‘address’, ‘city’, ‘state’]): __slots__ = () […]

Se omiten todas las pruebas de unidad, pero una en Python mediante el uso de decoradores y metaclases

Estoy escribiendo pruebas unitarias para una MCU que comunica los comandos a través del puerto USB y verifica su respuesta. Si una prueba de unidad falla, tiene sentido para mí hacer un poco de depuración en la MCU. Por lo tanto, me gustaría deshabilitar todas las pruebas de unidad, excepto la que me gustaría depurar […]

¿Cómo escribo un decorador para mi vista Django / Python?

Aquí está mi opinión. Básicamente, devuelve diferentes Respuestas en función de si ha iniciado sesión o no. @check_login() def home(request): if is_logged_in(request): return x else: return y Aquí está mi código de decorador. Solo quiero comprobar si la solicitud tiene encabezados, y si es así, inicie sesión. #decorator to log the user in if there […]

Ámbito de variables en el decorador python.

Tengo un problema muy raro en un decorador de Python 3. Si hago esto: def rounds(nr_of_rounds): def wrapper(func): @wraps(func) def inner(*args, **kwargs): return nr_of_rounds return inner return wrapper funciona bien Sin embargo, si hago esto: def rounds(nr_of_rounds): def wrapper(func): @wraps(func) def inner(*args, **kwargs): lst = [] while nr_of_rounds > 0: lst.append(func(*args, **kwargs)) nr_of_rounds -= 1 […]

Compruebe si una función tiene un decorador

Mi pregunta es general, pero específicamente mi aplicación es el decorador requerido para iniciar sesión para Django. Tengo curiosidad por saber si hay una manera de verificar si una vista / función tiene un decorador específico (en este caso, el decorador login_required) Estoy redireccionando después de cerrar la sesión de un usuario, y quiero redirigir […]

¿Por qué inspeccionar devuelve una línea diferente para la clase heredada de la superclase?

Al tratar de averiguar si una función se llama con la syntax de @decorator , nos dimos cuenta de que inspect tiene un comportamiento diferente cuando se mira una clase decorada que se hereda de una superclase. El siguiente comportamiento se encontró con CPython 3.6.2 en Windows 10. También se reprodujo en CPython 3.7.0 bajo […]

Función de inyección de llamada después de __init__ con decorador

Estoy tratando de encontrar la mejor manera de crear un decorador de clase que haga lo siguiente: Inyecta algunas funciones en la clase decorada. Fuerza una llamada a una de estas funciones DESPUÉS de que se llame la clase decorada ‘ __init__ Actualmente, solo estoy guardando una referencia al método ‘original’ __init__ y reemplazándolo con […]

Uso de métodos de clase / estáticos como valores de parámetros predeterminados dentro de métodos de la misma clase

Me gustaría hacer algo como esto: class SillyWalk(object): @staticmethod def is_silly_enough(walk): return (False, “It’s never silly enough”) def walk(self, appraisal_method=is_silly_enough): self.do_stuff() (was_good_enough, reason) = appraisal_method(self) if not was_good_enough: self.execute_self_modifying_code(reason) return appraisal_method def do_stuff(self): pass def execute_self_modifying_code(self, problem): from __future__ import deepjuju deepjuju.kiss_booboo_better(self, problem) Con la idea de que alguien puede hacer. >>> silly_walk = SillyWalk() […]

¿Cómo uso el paquete python-decorator para decorar los métodos de clase?

Tengo un decorador que quiero usar para decorar los métodos de clase. En el siguiente ejemplo, el decorador @mydec funciona bien por sí solo, sin embargo, no conserva la firma de la función cuando se utiliza help () o pydoc. Para solucionar esto, observé el uso del paquete @decorator python-decorator: import functools import decorator @decorator.decorator […]