Итак, будучи новичком 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) Как исправить в любом случае?
Заранее спасибо!