再帰的なクラスの関数の中で、私はどのようにクラスのメンバをデフォルトの引数として使用しますか?Pythonの再帰的なクラスのメソッドのデフォルトの引数
私は現在、以下のスニペット(Python 3)を使用しています。 高さは再帰的なクラス関数です。 ノードに使用するデフォルトの引数は、です。self._rootです。これを実現するために、私は次のようなことをしますが、別の関数を定義する必要があるところで、非常にラウンドします。height_treeより直接的なアプローチはありますか?
# following code works #
class BTree:
def __init__(self, node=None):
self._root = node
def height_tree(self):
return self.height(self._root)
def height(self, node):
if node is not None:
height = max(self.height(node.get_left()), self.height(node.get_right())) + 1
else:
height = 0
return height
私は次のようにしたいと思いますが、明らかに機能しません。それは再帰で終了条件の1
def height(self, node)
if node is None:
node = self._root
# this will conflict with logic in code block above#
あるので、
def height(self, node=self._root)
# code from above follows
しかし私は、ノードがNone場合、ノードには、rootを割り当てる別のトリックを使用することはできませんこのような状況を処理するための任意の推奨方法はありますか?
私はヘルパーメソッドを使用すると、すでにそれについて移動するための最もエレガントな方法だと思います。 tree-heightメソッドをパブリックAPIの一部にしたい場合は、 'height_tree'と' height'の代わりに 'height'と' _height'メソッドを呼び出すことができますが、名前付け以外にもこれはすでに良いと思います。 – user2357112
@ user2357112:お返事ありがとうございます。非常に役立ちます。 – toing