Я пытаюсь преобразовать длинный пустой класс «данных» в именованный кортеж. Мой класс сейчас выглядит так:
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')
Но есть проблема. Мой первоначальный класс позволил мне передать только значение и позаботился о значении по умолчанию, используя значения по умолчанию для именованных/ключевых аргументов. Что-то вроде:
class BinaryTree(object):
def __init__(self, val):
self.root = Node(val)
Но это не работает в случае с моим реорганизованным именованным кортежем, поскольку он ожидает, что я передам все поля. Я, конечно, могу заменить вхождения Node(val)
на Node(val, None, None)
, но мне это не нравится.
Итак, существует ли хороший трюк, который может сделать мою пере -запись успешной, не добавляя много сложности кода (метапрограммирования ), или я должен просто проглотить пилюлю и продолжить «поиск и замену»?:)