Python:构建树

时间:2011-07-17 15:15:54

标签: python binary-tree

我正在尝试建造一棵树。我乞求下一段代码:

>>> class tree:
    def __init__(self, charge, left=None, right=None):
        self.charge = charge
        self.left = left
        self.right = right

>>> class tree:
    def __str__(self):
        return str(self.charge)

写完之后我写了下一个

>>> left = tree(2)

我写这个是因为我应该按照我使用的手册进行教学。 但是我收到了这个错误:

Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
left = tree(2)
TypeError: this constructor takes no arguments

如何使用从下到上的开始代码构建树? 顺便说一句,我的python版本是2.7.2 非常感谢你的帮助。

1 个答案:

答案 0 :(得分:7)

您正在定义一个类,然后重新定义它。每当你说class tree:时,你都会创建一个新的类定义,覆盖前一个。由于tree的最后一个定义没有定义__init__方法,因此它不接受任何参数。

在交互式解释器中执行此操作的事实使事情变得复杂,因为无论何时键入空行,您都会结束正在处理的任何定义。对于课程,只需编辑文本文件mytree.py,然后输入>>> import mytree,您可能会更好。

此外,如果您使用的手册建议使用class foo:作为定义类的方法,而且它是关于Python 2的,那么它是非常旧的手册。使用最新版本的Python 2时,您应该这样做:

class Tree(object):
    def __init__(self, ...)
    ...

正如delnan所指出的,你不需要在Python 3中明确地继承object,所以你可以将括号留空。实际上,你可以完全省略它们;当他们不在时,我的眼睛会错过它们,但Dive Into Python 3根本不包括它们。