为什么这个python代码有语法错误?

时间:2013-01-29 02:56:13

标签: python

为了练习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)

无济于事。

3 个答案:

答案 0 :(得分:7)

在Python 2中print是一个关键字,因此您不能将其用作函数或方法的名称。

答案 1 :(得分:3)

在Python 2.7(可能还有其他版本)中,您可以使用print函数覆盖print语句,而不是覆盖该函数。

要做到这一点,你必须添加

from __future__ import print_function

作为文件的第一行。

答案 2 :(得分:2)

在Python 2中print是保留字,不能是变量或方法或函数的名称。