È considerata una cattiva prassi avere una classe definita in un file __init__.py? Ho un caso simile a un calcolatore delle imposte. Voglio avere una classe calcolatrice e quindi un insieme di classi di calcolatori fiscali specifici per stato che la classe calcolatrice fa riferimento internamente. Qualcosa di simile:Python __init__.py e classi
class TaxCalculator():
def __init__(self):
self.ca_tax_calculator = CATaxCalculator()
self.ny_tax_calculator = NYTaxCalculator()
def get_tax_calculator_for_state(self, state):
tax_calculator = None
if state == "CA":
tax_calculator = self.ca_tax_calculator
else:
tax_calculator = self.ny_tax_calculator
return tax_calculator
def calculate(self, purchase_info):
return self.get_tax_calculator_for_state(purchase_info.state).calculate(purchase_info.amount)
La struttura di directory Sto pensando di simile a questo:
/calculators/__init__.py
/calculators/ca.py
/calculators/ny.py
E il __init__.py ospitato la funzione "TaxCalculator".
Classi sarebbe fare riferimento alle calcolatrici cioè:
from calculators import TaxCalculator
calculator = TaxCalculator().calculate(purchase_info)
È che pratica male considerato o no realmente Pythonic?
Non sono sicuro che questa sia la soluzione completa che stai cercando, ma il seguente post StackOverflow ha una buona spiegazione di come viene tipicamente utilizzato. http://stackoverflow.com/a/18979314/4194964 Parla delle variabili a livello di modulo e di come il file __init__.py dovrebbe essere sottile per evitare di violare la filosofia "esplicita è meglio di quella implicita" –