namedtuple und Standardwerte für optionale Schlüsselwortargumente
Ich versuche, eine längliche hohle "Daten" -Klasse in ein benanntes Tupel umzuwandeln. Meine Klasse sieht momentan so aus:
class Node(object):
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
Nach der Umstellung aufnamedtuple
es sieht aus wie:
from collections import namedtuple
Node = namedtuple('Node', 'val left right')
Aber hier gibt es ein Problem. In meiner ursprünglichen Klasse konnte ich nur einen Wert übergeben und die Standardwerte für die Argumente named / keyword verwenden. So etwas wie:
class BinaryTree(object):
def __init__(self, val):
self.root = Node(val)
Dies funktioniert jedoch nicht bei meinem überarbeiteten named-Tupel, da erwartet wird, dass ich alle Felder übergebe. Ich kann natürlich die Vorkommen von ersetzenNode(val)
zuNode(val, None, None)
aber es gefällt mir nicht.
Gibt es also einen guten Trick, mit dem ich erfolgreich neu schreiben kann, ohne viel Code-Komplexität (Metaprogrammierung) hinzuzufügen, oder sollte ich einfach die Pille schlucken und mit dem "Suchen und Ersetzen" fortfahren? :)