TL; DR. Как узнать, была ли определена функция с помощью @classmethod
или с тем же эффектом?
Моя проблема
Для реализации декоратора класса я хотел бы проверить, принимает ли метод этот класс в качестве первого аргумента, например, достигнутый с помощью
@classmethod
def function(cls, ...):
Я нашел решение для проверки @staticmethod
через модуль types
(isinstance(foo, types.UnboundMethodType)
is False
, если foo
является статическим, см. здесь), но не нашел ничего о том, как это сделать для @classmethod
Контекст
То, что я пытаюсь сделать, это что-то вроде строк
def class_decorator(cls):
for member in cls.__dict__:
if (isclassmethod(getattr(cls, member))):
# do something with the method
setattr(cls, member, modified_method)
return cls
и я не знаю, как реализовать то, что я назвал isclassmethod
в этом примере