Diciamo che ho una piccola libreria per masterizzare CD scritta in Python, con una classe CD e un'interfaccia Burner + classi di implementazione:
# Module cd.py
class CD:
def __init__(self):
self.folders = []
self.files = []
# Module burners/burners.py
BURNERS = []
# Module burners/cdburnerxp.py
class CDBurnerXP(CDBurner):
def burn_cd(self, cd):
# burn baby burn
BURNERS.append(CDBurnerXP)
Se desidero aggiungere un metodo conveniente alla classe CD
:
def burn(self):
return BURNERS[0].burn_cd(self)
causerà problemi in futuro? È considerato più accoppiato che istanziare il bruciatore all'esterno da noi stessi?
Inoltre, se desidero aggiungere una factory per ricreare un CD
da un'unità fisica:
# Module factories/drive.py
from cd import CD
DriveBasedCDFactory(CDFactory):
def create_cd(self):
# stuff
return CD()
Aggiungerà un
@classmethod
def from_drive(cls):
return DriveBasedCDFactory().create_cd()
a CD
causano anche più accoppiamenti? Come posso risolvere l'importazione circolare implicita?