我正在尝试建造一棵树。我乞求下一段代码:
>>> 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 非常感谢你的帮助。
答案 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根本不包括它们。