具有内部节点值的树形结构,__ init__方法的参数

时间:2018-06-21 05:04:49

标签: python python-3.x python-2.7 oop recursion

下面的类表示具有内部节点值的树结构。斐波那契递归函数用于生成fib_tree。我还没有遇到fib_tree中下面对类的返回调用。符号Tree (left.entry + right.entry, left, right)使我感到困惑。在OOP中,我熟悉obj_inst.attobj_inst.method()propertiesself__init__等。

这里left.entry + right.entry-左,右和入口是对象实例本身的属性,那么attribute.attribute是什么意思?到底是什么传递给__init__?这是一种流行的技术吗,它有一个我可以研究的名称吗?

class Tree (object):
    def __init__(self, entry , left = None, right = None):
        self.entry = entry
        self.right = right
        self.left = left

    def __repr__(self):
        args = repr(self.entry)
        if self.left or self.right:
            args += ' ,  {0}, {1}'.format (repr(self.left), repr(self.right))
        return 'Tree ({0})'. format (args)


def fib_tree (n):

    if n == 1:
        return Tree (0)
    if n == 2:
        return Tree (1)
    left = fib_tree (n-2)
    right = fib_tree (n-1)
    return Tree (left.entry + right.entry, left, right)

fib_tree (4)
#Tree (2 ,  Tree (1), Tree (1 ,  Tree (0), Tree (1)))

1 个答案:

答案 0 :(得分:1)

Tree (left.entry + right.entry, left, right)

这说“用数字和两个Tree实例创建Tree类的新实例”。 (在这种情况下...类型检查在Python中没什么大不了的。)

请注意,left和right不是属性,它们是Tree的实例,在fib_tree()返回上方的两行中创建。