21
namedtuple和可选关键字参数的默认值
我正在尝试将冗长的空心“数据”类转换为命名元组。我的班级目前看起来像这样: 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)但是这并不是我喜欢的。 那么,是否存在一个可以使我的重写成功而又不增加很多代码复杂性(元编程)的好技巧,还是我应该吞下药丸并继续进行“搜索并替换”?:)