Ceci est la suite de one of my previous questionsmodèle composite pour l'application GTD
Voici mes classes.
#Project class
class Project:
def __init__(self, name, children=[]):
self.name = name
self.children = children
#add object
def add(self, object):
self.children.append(object)
#get list of all actions
def actions(self):
a = []
for c in self.children:
if isinstance(c, Action):
a.append(c.name)
return a
#get specific action
def action(self, name):
for c in self.children:
if isinstance(c, Action):
if name == c.name:
return c
#get list of all projects
def projects(self):
p = []
for c in self.children:
if isinstance(c, Project):
p.append(c.name)
return p
#get specific project
def project(self, name):
for c in self.children:
if isinstance(c, Project):
if name == c.name:
return c
#Action class
class Action:
def __init__(self, name):
self.name = name
self.done = False
def mark_done(self):
self.done = True
Voici le problème que j'ai. Si je construis un grand projet avec plusieurs petits projets, je veux voir ce que sont les projets ou les actions pour le projet en cours, mais je les trouve tous dans l'arborescence. Voici le code de test que j'utilise (notez que j'ai volontairement choisi plusieurs façons d'ajouter des projets et des actions à tester pour m'assurer que différentes méthodes fonctionnent).
life = Project("life")
playguitar = Action("Play guitar")
life.add(Project("Get Married"))
wife = Project("Find wife")
wife.add(Action("Date"))
wife.add(Action("Propose"))
wife.add(Action("Plan wedding"))
life.project("Get Married").add(wife)
life.add(Project("Have kids"))
life.project("Have kids").add(Action("Bang wife"))
life.project("Have kids").add(Action("Get wife pregnant"))
life.project("Have kids").add(Project("Suffer through pregnancy"))
life.project("Have kids").project("Suffer through pregnancy").add(Action("Drink"))
life.project("Have kids").project("Suffer through pregnancy").add(playguitar)
life.add(Project("Retire"))
life.project("Retire").add(playguitar)
vie devrait avoir quelques projets en elle, avec quelques projets à l'intérieur de ceux-ci. La structure revient à quelque chose comme ceci (où sont les projets et tirets -Bois sont des actions)
Life
Get Married
Find wife
- Date
- Propose
- Plan wedding
Have kids
- Bang wife
- Get wife pregnant
Suffer through pregnancy
- Drink
- Play guitar
Retire
- Play guitar
Ce que je trouve que life.actions() est de retour chaque action dans l'arbre quand il doit retourner aucun . life.projects() renvoie tous les projets, même les sous-projets, quand je veux seulement «se marier», «avoir des enfants» et «prendre sa retraite». Qu'est-ce que je fais de mal?
Bons exemples. Maintenant, je sais quoi faire quand ma femme tombe enceinte une deuxième fois. Boire et jouer de la guitare. Je dois l'écrire dans mon outil de capture GTD. :) –