У меня небольшая проблема с декорированием статического метода в Python. Я думаю, что следующий код лучше всего представляет мою проблему:
def decorator(func):
print callable(func)
return func
class Foo():
@decorator
@staticmethod
def bar():
return
# outputs False
print callable(Foo.bar)
# outputs True
Кажется, это ошибка. Я предполагаю, что это возникает потому, что когда метод Foo.bar
передается декоратору, это функция, а не метод. Это единственная причина, по которой я вижу, что она не вызывается, поскольку, если мы декорируем стандартную функцию, она не вызывается, как показано ниже.
@staticmethod
def function():
return
print callable(function)
# outputs False
Так это настоящая ошибка в реализации декоратора staticmethod и / или есть какие-то простые обходные пути? Я действительно думал о написании декоратора для присвоения атрибута __ call __
, но я не знаю, как реализован callable
, поэтому я не могу оценить успех такого метода.