Czy uważa się za złą praktykę zdefiniowanie klasy w pliku __init__.py? Mam sprawę podobną do kalkulatora podatkowego. Chcę mieć klasę kalkulatora, a następnie zestaw klas kalkulatora podatkowego, które klasa kalkulatora odwołuje się wewnętrznie. Coś jak:Python __init__.py i klasy
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)
struktura katalogów myślę o wygląda następująco:
/calculators/__init__.py
/calculators/ca.py
/calculators/ny.py
A __init__.py mieści funkcję "TaxCalculator".
Zajęcia będą odwołujące kalkulatorów tj:
from calculators import TaxCalculator
calculator = TaxCalculator().calculate(purchase_info)
Czy to uważane złą praktyką lub nie naprawdę pythonowy?
Nie jestem pewien, czy jest to kompletne rozwiązanie, którego szukasz, ale następujący post Stackoverflow ma dobre wyjaśnienie, w jaki sposób jest on zwykle używany. http://stackoverflow.com/a/18979314/4194964 Rozmowy na temat zmiennych na poziomie modułu i tego, jak plik __init__.py powinien być cienki, aby uniknąć naruszenia zasady "wyraźniej jest lepszy niż niejawny" –