Visitar nodos en un árbol de sintaxis con el módulo Python ast

Estoy jugando con python ast (árbol de sintaxis abstracta).

Escribí lo siguiente y visitó todos los nodos del AST.

import ast

class Py2Neko(ast.NodeVisitor):
    def generic_visit(self, node):
              print type(node).__name__
              ast.NodeVisitor.generic_visit(self, node)

       def visit_Name(self, node):
              print 'Name :', node.id

       def visit_Num(self, node):
              print 'Num :', node.__dict__['n']

       def visit_Str(self, node):
              print "Str :", node.s

if __name__ == '__main__':

    node = ast.parse("a = 1 + 2")

    print ast.dump(node)

    v = Py2Neko()
    v.visit(node)

Luego agregó algunos métodos a la clase Py2Neko

def visit_Print(self, node):
    print "Print :"

def visit_Assign(self, node):
    print "Assign :"

def visit_Expr(self, node):
    print "Expr :"

Pero luego, cuando se encuentra con una declaración de "impresión" o una asignación o una expresión, parece que se detiene y no va más allá.

Produce:

Module(body=[Assign(targets=[Name(id='a', ctx=Store())], value=BinOp(left=Num(n=1), op=Add(),       right=Num(n=2)))])
Module
Assign :

¿Alguien puede decirme qué hice mal?

Estoy usando Python 2.6.6

Respuestas a la pregunta(2)

Su respuesta a la pregunta