micropython

tests/visitor_getattr.py

530:0f9aa4c4d92c
2012-06-09 Paul Boddie Added an __iter__ method for strings.
     1 #!/usr/bin/env python     2      3 class Branch:     4     def __init__(self, nodes):     5         self.nodes = nodes     6      7 class Leaf:     8     def __init__(self, value):     9         self.value = value    10     11 class Visitor:    12     def visit(self, node):    13         method = getattr(self, node.__class__.__name__)    14         return method(node)    15     16     # Visitor-specific functionality.    17     # Note that getattr does not support "visit" + __class__.__name__.    18     19     def Branch(self, node):    20         sum = 0    21         for node in node.nodes:    22             sum += self.visit(node)    23         return sum    24     25     def Leaf(self, node):    26         return node.value    27     28 tree = \    29     Branch((    30         Branch((    31             Leaf(10),    32             Leaf(5)    33             )),    34         Leaf(2)    35         ))    36     37 visitor = Visitor()    38 result_17 = visitor.visit(tree)    39     40 # vim: tabstop=4 expandtab shiftwidth=4