| #! /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:]) |