2015-08-09 1 views
1

J'utilise le code de la réponse à la question here.Python - Stockez l'information de mariage en utilisant les classes

Quelle serait la façon la plus pythonique de stocker des informations sur le mariage? Je voudrais qu'il soit possible de demander self.husband ou self.wife de toute personne mariée stockée dans une classe, et demander des self.children à partir de ceux-ci récursivement.

class Person: 
    ID = itertools.count() 
    def __init__(self, name, parent=None, level=0): 
     self.id = self.__class__.ID.next() # next(self.__class__.ID) in python 2.6+ 
     self.parent = parent 
     self.name = name 
     self.level = level 
     self.children = [] 

def createTree(d, parent=None, level=0): 
    if d: 
     member = Person(d['parent'], parent, level) 
     level = level + 1 
     member.children = [createTree(child, member, level) for child in d['children']] 
     return member 

t = createTree(my_tree) # my_tree is the name of thedictionary storing parents and children. Need 'parent' key to become 'parents' key which stores a list of two people. 
+5

[Mariage: perspective de l'ingénierie de base de données] (http://qntm.org/gay) – davidism

Répondre

0

Plutôt que d'essayer de sortir un bon modèle par vous-même, ce que vous regardez ici est un graphique orienté. J'utiliserais networkx pour créer le graphique. Cela vous donnera un tas d'outils pour rechercher dans le graphique, afficher, obtenir des statistiques sur celui-ci. Vous pouvez donc créer une personne en tant que nœud, puis créer des contours pour les parents et les enfants. Vous pouvez ajouter des restrictions à la création des bords si vous le souhaitez plus tard. https://networkx.github.io/documentation/latest/tutorial/tutorial.html