Получение вызовов методов и их аргументов из объекта метода
Используя питоновinspect
Модуль Я выделил объект метода, теперь мне нужно пройтись по исходному коду в методе, чтобы найти вызовы некоторых других методов и получить их аргументы.
Например, предположим, в следующем классе:
def my_method():
print('hello')
foobar('apple', 'pear', 6)
print('world')
foobar(1, 2, 3)
return foobar('a', 'b')
Мне нужно извлечь список аргументов, переданныхfoobar()
:
[('apple', 'pear', 6), (1, 2, 3), ('a', 'b', None)]
Можно предположить, что все аргументы жестко закодированы и не являются динамическими.
Учитывая метод объекта изinspect
пакет, как я могу проверить вызовы метода в указанном методе?
inspect.getsourcelines(method)
но это нарушается, если изменяется синтаксис аргумента.Я смотрел на абстрактные синтаксические деревья с питонамиast
модуль, но не пришел ни к какому решению.Должен быть способ завершить это, используяinspect
но опять же я не пришел ни к какому решению.