GreenTreeSnakes имеет довольно обширную документацию по узлам в дереве Python AST.
Я не знаю, действительно ли вы анализируете код в дереве ast
или нет, поэтому я включу это здесь.
Разобрать код в дерево:
code = '''toggleSwitch = False
# check for someValue in the key-value store
if 'someValue' in context['someKey']:
toggleSwitch = True'''
import ast
tree = ast.parse(code)
Затем в вашем классе Analyzer вы можете получить символ someValue
из s
атрибут узла _ast.Str
.
class Analyzer(ast.NodeVisitor):
def __init__(self):
self.stats = {'if': []}
def visit_If(self, node):
# Add the "s" attribute access here
print("If:", node.test.left.s)
self.stats["if"].append(node.body)
self.generic_visit(node)
def report(self):
pprint(self.stats)
>>> a = Analyzer()
>>> a.visit(tree)
If: someValue
Для узла If
атрибуты переходят в test
(_ast.Compare
) → left
(_ast.Str
) → s
(str
).