- все переменные, заданные в классе?
Речь про builtin модуль ast?
да, про негож родимого
А не проще через inspect делать?
а пример не насыпишь, как?
Inspect.getmembers(...) и алга
https://docs.python.org/3/library/inspect.html
там надо сам модуль импортнуть, во всяком случае в первых найденых примерах. А без импорта inspect умеет?
У тебя на входе исходник как строка?
Тогда через пройтись по нодам после построения дерева, и проверить сначала на ClassDef, потом на Name наверно, вообще лучше глянуть как дерево построено будет сначала, думаю, там станет понятнее
в том и затык, чего то сначала идут класс дефы, потом - ассигны (присвоения переменным) вот фрагмент принта обхода ast: name TFC_CheckLinks name TFC_Login name TFC_Logout name TFC_CheckLoggerOutSession {'JIRA_ZEPYHR_TESTCASE': 'MYA-3123'} {'JIRA_ZEPYHR_TESTCASE': 'MYA-2176'} {'JIRA_ZEPYHR_TESTCASE': 'MYA-3106'}
а если if node.__class__.__name__ == "Assign" загнать внутрь ифа на "ClassDef" - тогда вообще не відает ниче
может сделать exec в каком-нибудь scope, а там уже через inspect? scope = {} exec(expr, scope)
а там уже и inspect можно)
Использование exec, eval крайне небезопасно в коде
зато есть ast.literal_eval
Обсуждают сегодня