Tengo algo parecido a lo siguiente. Básicamente, necesito acceder a la clase de un método de instancia desde un decorador utilizado en el método de instancia en su definición.
def decorator(view):
# do something that requires view's class
print view.im_class
return view
class ModelA(object):
@decorator
def a_method(self):
# do some stuff
pass
El código tal como está da:
AttributeError: el objeto 'función' no tiene atributo 'im_class'
Encontré preguntas / respuestas similares: el decorador de Python hace que la función olvide que pertenece a una clase y Obtener clase en el decorador de Python , pero se basan en una solución alternativa que captura la instancia en tiempo de ejecución al arrebatar el primer parámetro. En mi caso, llamaré al método en función de la información obtenida de su clase, por lo que no puedo esperar a que entre una llamada.
inspect.getmro(cls)
para procesar todas las clases base en el decorador de clases para admitir la herencia.inspect
que el rescate stackoverflow.com/a/1911287/202168