Salut,
Je souhaite faire un package. N'ayant pas de notions d'architecture logiciel, j'ai jeté un oeil à ce guide et à différentes sources pour l'inspiration. Pour faire court j'ai en tête cette organisation:
L'idée ici est de pouvoir ajouter différents solvers lorsque le projet évoluera. solver.py suit le design pattern "strategy" qui permet de créer à la volée l'un ou l'autre solver tout en conservant une syntaxe commune. Peut-être fais-je fausse route, n'hésitez pas à pointer un problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 core/ __init__.py solver.py solvers/ __init__.py solverbase.py solver1.py
Je galère avec les imports relatifs. Il y a quelque chose qui m'échappe.
solver.py
__init__.py (dans le dossier solvers)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 from solvers import * class Solver(object): def __init__(self): self.SolverStrat = solver1.Solver1 obj = Solver()
solverbase.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part __all__ = ['solver1']
solver1.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class SolverBase(object): def __init__(self): print('Init ok')
Je m'attends à voir s'afficher 'Init ok' car à l'instanciation de l'objet Solver j'instancie en fait Solver1 qui lui même hérite de SolverBase. Sauf qu'il ne se passe rien. Si je print obj j'ai droit à une info sur l'objet en lui-même:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 from .solverbase import SolverBase class Solver1(SolverBase): def __init__(self): SolverBase.__init__(self)
J'en déduit que l'instanciation n'a pas eu lieu. Mais pourquoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part >>> __main__.Solver object at 0x00000000074F0F0
Partager