python декоратор / дескриптор как статический метод - PullRequest
0 голосов
/ 19 марта 2020

Итак, будучи новичком Python, я не могу понять, что здесь происходит ...

Я пытаюсь определить декоратор / дескриптор, который, помимо прочего, имеет поведение staticmethod.

Наивно пытался создать мой декоратор / дескриптор, который наследует staticmethod. Это не сработало ...

Вопрос 1) Почему? Правила здесь разные? Есть ли способ наследовать staticmethod?

В любом случае, после прочтения: https://docs.python.org/3/howto/descriptor.html#id9, я придумал это:

class my_descriptor(object):
    def __init__(self, f):
        self._f = staticmethod(f)

    def __get__(self, obj, obj_type=None):
        res = self._f.__get__(obj, obj_type)()

        # HERE I DO MY STUFF...

        return res


class MyClass:
    @my_descriptor
    def my_function():
        return MyObject(...)

Запустив это, все работает. Отлично.

НО

PyCharm помечает my_function как ошибку со следующим сообщением:

Метод должен иметь первый параметр, обычно называемый «self»

Вопрос 2) Я что-то не так сделал или это ошибка PyCharm?

Вопрос 3) Как исправить в любом случае?

Заранее спасибо!

...