Je suis en train de convertir un allongé creux "données" de la classe dans un nom de tuple. Ma classe actuellement ressemble à ceci:
class Node(object):
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
Après la conversion en namedtuple
il ressemble:
from collections import namedtuple
Node = namedtuple('Node', 'val left right')
Mais il y a un problème ici. Ma classe d'origine m'a permis de passer en juste valeur et a pris soin de le par défaut à l'aide des valeurs par défaut pour le nom/mot-clé arguments. Quelque chose comme:
class BinaryTree(object):
def __init__(self, val):
self.root = Node(val)
Mais cela ne fonctionne pas dans le cas de mon remaniée nommé tuple, car il s'attend à ce que je passe tous les domaines. Je peux bien sûr remplacer les occurrences de Node(val)
de Node(val, None, None)
mais il n'est pas à mon goût.
Donc, existe-t-il un bon truc qui peut me ré-écriture de succès sans l'ajout d'un lot de la complexité du code (métaprogrammation) ou dois-je juste avaler la pilule et aller de l'avant avec la "recherche et remplacement"? :)
TIA
-- sauke