一般方法是子类
ast.NodeVisitor:
>>> class VisitCalls(ast.NodeVisitor):
... def visit_Call(self, what):
... if what.func.value.id == 'self':
... print what.func.attr
...
>>> f='''def x(self):
... return self.bar() + self.baz()
... '''
>>> xx = ast.parse(f)
>>> VisitCalls().visit(xx)
bar
baz
但是,这只能捕获对self.something的“立即”调用.在一般情况下,你可以有例如somelist.append(self.blah)然后很久以后在代码somelist [ij]():确定后者是调用self.blah还是调用其他一些与方法无关的调用问题目前的实例是图灵完全(CS术语“完全不溶于一般情况”,很像数学家可能会说“NP-hard”;-).
但如果您只需要解决简单的“即时通话”案例,那么您就可以了;-).