首页 > 解决方案 > 具有内部节点值的树结构,__init__ 方法的参数

问题描述

下面的类表示具有内部节点值的树结构。斐波那契递归函数用于制作fib_tree. 我还没有遇到下面的类的回电fib_tree。这个符号Tree (left.entry + right.entry, left, right)让我感到困惑。在 OOP 中,我熟悉obj_inst.att, obj_inst.method(), properties,self__init__

这里left.entry + right.entry-left,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)))

标签: pythonpython-3.xpython-2.7ooprecursion

解决方案


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

这表示“创建一个 Tree 类的新实例,带有一个数字和两个 Tree 实例。” (在这种情况下......类型检查在 Python 中不是很重要)。

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


推荐阅读