21
オプションのキーワード引数の名前付きタプルとデフォルト値
長めの中空の「データ」クラスを名前付きタプルに変換しようとしています。私のクラスは現在次のようになっています: class Node(object): def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right 変換後namedtupleは次のようになります。 from collections import namedtuple Node = namedtuple('Node', 'val left right') しかし、ここに問題があります。元のクラスでは、値のみを渡すことができ、named / keyword引数にデフォルト値を使用することでデフォルトを処理していました。何かのようなもの: class BinaryTree(object): def __init__(self, val): self.root = Node(val) しかし、これは、リファクタリングされた名前付きタプルの場合、すべてのフィールドを渡すことを期待しているため機能しません。もちろん、Node(val)to の出現を置き換えるNode(val, None, None)ことはできますが、それは私の好みではありません。 それで、コードの複雑さを大幅に追加せずに(メタプログラミング)、私の書き換えを成功させることができる優れたトリックはありますか?それとも、錠剤を飲み込んで「検索と置換」を続行する必要がありますか?:)