为了练习python,我为一个树结构创建了一个简单的类,其中每个节点都可以有无限的子节点。
class Tree():
def __init__(self, children, val):
self.children = children
self.val = val
def add(self, child):
self.children.append(child)
def remove(self, index):
child = self.children[index]
self.children.remove(child)
return child
def print(self):
self.__print__(0)
def __print__(self, indentation):
valstr = ''
for i in range(0, indentation):
valstr += ' '
valstr += self.val
for child in self.children:
child.__print__(indentation + 1)
但是,我在行def print(self):
中有语法错误。错误在哪里?我一直在寻找很长一段时间,这似乎是定义python函数的正确方法。
我也试过
@override
def print(self):
self.__print__(0)
无济于事。
答案 0 :(得分:7)
在Python 2中print
是一个关键字,因此您不能将其用作函数或方法的名称。
答案 1 :(得分:3)
在Python 2.7(可能还有其他版本)中,您可以使用print函数覆盖print语句,而不是覆盖该函数。
要做到这一点,你必须添加
from __future__ import print_function
作为文件的第一行。
答案 2 :(得分:2)
在Python 2中print
是保留字,不能是变量或方法或函数的名称。