Organisation package - Problème avec imports
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:
Code:
1 2 3 4 5 6 7
| core/
__init__.py
solver.py
solvers/
__init__.py
solverbase.py
solver1.py |
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.
Je galère avec les imports relatifs. Il y a quelque chose qui m'échappe.
solver.py
Code:
1 2 3 4 5 6 7
| from solvers import *
class Solver(object):
def __init__(self):
self.SolverStrat = solver1.Solver1
obj = Solver() |
__init__.py (dans le dossier solvers)
Code:
__all__ = ['solver1']
solverbase.py
Code:
1 2 3
| class SolverBase(object):
def __init__(self):
print('Init ok') |
solver1.py
Code:
1 2 3 4 5 6
| from .solverbase import SolverBase
class Solver1(SolverBase):
def __init__(self):
SolverBase.__init__(self) |
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:
>>> __main__.Solver object at 0x00000000074F0F0
J'en déduit que l'instanciation n'a pas eu lieu. Mais pourquoi?