| #! /usr/bin/env python | |
| """Print names of all methods defined in module | |
| This script demonstrates use of the visitor interface of the compiler | |
| package. | |
| """ | |
| import compiler | |
| class MethodFinder: | |
| """Print the names of all the methods | |
| Each visit method takes two arguments, the node and its current | |
| scope. The scope is the name of the current class or None. | |
| """ | |
| def visitClass(self, node, scope=None): | |
| self.visit(node.code, node.name) | |
| def visitFunction(self, node, scope=None): | |
| if scope is not None: | |
| print "%s.%s" % (scope, node.name) | |
| self.visit(node.code, None) | |
| def main(files): | |
| mf = MethodFinder() | |
| for file in files: | |
| f = open(file) | |
| buf = f.read() | |
| f.close() | |
| ast = compiler.parse(buf) | |
| compiler.walk(ast, mf) | |
| if __name__ == "__main__": | |
| import sys | |
| main(sys.argv[1:]) |