2

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)

無駄に。

4

3 に答える 3

7

Python 2 ではprintキーワードであるため、関数またはメソッドの名前として使用することはできません。

于 2013-01-29T02:58:21.983 に答える
3

Python 2.7 (およびおそらく他のバージョン) では、print ステートメントを print 関数でオーバーライドしてから、その関数をオーバーライドできます。

そのためには、追加する必要があります

from __future__ import print_function

ファイルの最初の行として。

于 2013-01-29T03:06:13.190 に答える
2

Python 2printでは、予約語であり、変数、メソッド、または関数の名前にすることはできません。

于 2013-01-29T02:58:39.363 に答える