3
파이썬의 ast 모듈을 사용하여 클래스 상속 트리를 표시하고 있습니다.AST에서 상속 트리를 얻는 방법?
ast.NodeVisitor
에 대해 visit_ClassDef(self, node)
함수를 정의하고 node.bases
을 반복합니다.
그러나 기본 클래스의 이름을 문자열로 가져올 수 없었습니다. 지금까지 base.value
과 base.name
을 시도했지만 아무 소용이 없습니다.
>>> import ast
>>> class Visit(ast.NodeVisitor):
... def visit_ClassDef(self, node):
... print [n.id for n in node.bases]
...
>>> text = open('test.py').read()
>>> tree = ast.parse(text)
>>> Visit().visit(tree)
['Foo', 'Baz']
여기 test.py
입니다 : 당신은 id
속성을 찾고 아마있어
제게'n.id'는 파이썬 v2.7과 파이썬 v3.4에서 에러를냅니다. '[n.attr for node.bases] '는 트릭을하는 것처럼 보입니다. –
이것은 직접베이스 클래스만을 출력합니다 (1 레벨 아래로 파생되지는 않음). 진정한 상속 트리에 어떻게 접근 할 수 있습니까? – rwols