当我们需要编写代码来处理或者遍历一个由许多不同类型的对象组成的复杂数据结构,每种类型的对象处理的方式都不相同。例如遍历一个树结构,根据遇到的树节点的类型来执行不同的操作。
为了展示不同的类的处理,首先定义一些需要用到的类:
class Node:
pass
class UnaryOperator(Node):
def __inif__(self, operand):
self.operand = operand
class BinaryOperator(Node):
def __init__(self, left, right):
self.left = left
self.right = right
class Number(Node):
def __init__(self, value):
self.value = value
class Add(BinaryOperator):
pass
class Sub(BinaryOperator):
pass
class Mul(BinaryOperator):
pass
class Div(BinaryOperator):
pass
class Negate(UnaryOperator):
pass
之后我们可以如下使用这些类:
>>> #表示 1 + 2 * (3 - 4) / 5
>>> t1 = Sub(Number(3), Number(4))
>>> t2 = Mul(Number(2), t1)
>>&g