Я бы хотел иметь возможность регистрировать / возвращать методы на уровне класса. Самый близкий ответ, который я мог найти, был здесь: Авторегистрация методов класса с использованием декоратора , за исключением того, что он был центрирован на глобальном регистре, и я ищу что-то конкретное для класса, описанного ниже.
Код:
class ExampleClass:
def get_reports(self):
# return list of all method names with @report decorator
pass
def report(self):
# decorator here
pass
@report
def report_x(self):
return
@report
def report_y(self):
return
def method_z(self):
pass
где я бы хотел ExampleClass.get_reports()
вернуть ['report_x', 'report_y']
.
Не всем отчетам будет предшествовать report_
, поэтому, скорее всего, нет способа просто посмотреть на имена методов. Я пытаюсь выяснить, как это сделать, чтобы применить к различным ситуациям, поэтому просто поиск 'report_'
не работает в этом контексте.