Я хочу получить список всех сопрограмм в текущем файле (extern_method и extern_method2 в моем примере кода). Поведение должно быть таким же, как: method_list = [extern_method, extern_method2]
, но я хочу, чтобы оно отображалось автоматически.
У меня есть такая файловая структура:
@wraps(lambda: extern_method)
@my_decorator
async def extern_method(arg)
return arg + "hello"
@wraps(lambda: extern_method2)
@my_decorator
async def extern_method2(arg)
return arg + 123
class myclass:
(...)
def find_extern_methods():
#here missing code
return method_list
(...)
def do_sth_with_methods():
#do sth. with Methods
Я пытался использовать ast
Модуль:
with open(basename(__file__), "rb") as f:
g = ast.parse(f.read(), basename(__file__))
for e in g.body:
if isinstance(e, ast.AsyncFuntionDef):
method_list.append(e)
Это может найти все сопрограммы, но я не могу извлечь какую-либо ссылку на него.
Я также пытался использовать,
method_list = inspect.getmembers(basename(__file__), inspect.iscoroutinefunction))
но это тоже ничего не найдет.