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