Tengo un pequeño problema al decorar un método estático en Python. Creo que el siguiente código representa mejor mi problema:Python: Método estático decorado que recibe el método no desechable
def decorator(func):
print callable(func)
return func
class Foo():
@decorator
@staticmethod
def bar():
return
# outputs False
print callable(Foo.bar)
# outputs True
Esto parece ser un error. Me imagino que surge porque cuando el método Foo.bar
se pasa al decorador, es una función, no un método. Esa es la única razón por la que veo que no se puede llamar, ya que si decoramos una función estándar, no se puede llamar, como se muestra a continuación.
@staticmethod
def function():
return
print callable(function)
# outputs False
Así es esto un cierto error en la aplicación del decorador métodoestático, y/o existen soluciones provisionales simples? Pensé en escribir un decorador para asignar un atributo __call__
, pero no sé cómo se implementa callable
, por lo que no puedo medir el éxito de dicho método.
Tenga en cuenta que debe usar las clases de estilo nuevo para que un 'método estático' sea invocado también en instancias, ya que esto usa descriptores. –
Para que funcione, simplemente cambie el orden de los descriptores. –