Python:构建树

Pet*_*one 0 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)
Run Code Online (Sandbox Code Playgroud)

写完之后我写了下一篇

>>> left = tree(2)
Run Code Online (Sandbox Code Playgroud)

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

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

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

sen*_*rle 7

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

您在交互式解释器中执行此操作的事实使事情变得复杂,因为只要您键入空行,就会结束您正在处理的任何定义.你可能会更好,当涉及到类,只需编辑文本文件mytree.py然后键入>>> import mytree.

此外,如果您使用的手册建议class foo:定义类,并且它是关于Python 2的,那么它是一本非常古老的手册.使用最新版本的Python 2时,您应该这样做:

class Tree(object):
    def __init__(self, ...)
    ...
Run Code Online (Sandbox Code Playgroud)

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