Python: Декорированный статический метод получает не вызываемый метод

У меня небольшая проблема с декорированием статического метода в 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 , поэтому я не могу оценить успех такого метода.

7
задан Cœur 22 April 2018 в 16:55
поделиться