Считается, что у плохой практики есть класс, определенный в файле __init__.py? У меня есть случай, похожий на калькулятор налога. Я хочу иметь класс калькулятора, а затем набор специфических для штата классов калькулятора налогов, которые класс калькулятора ссылается на внутреннюю систему. Что-то вроде:Python __init__.py и классы
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)
Структура каталога Я думаю о том, как это выглядит:
/calculators/__init__.py
/calculators/ca.py
/calculators/ny.py
И __init__.py размещался функцию "TaxCalculator".
Классы будут ссылающихся калькуляторов, то есть:
from calculators import TaxCalculator
calculator = TaxCalculator().calculate(purchase_info)
Это считается плохой практикой или на самом деле не Pythonic?
Я не уверен, что это полное решение, которое вы ищете, но следующее сообщение Stackoverflow имеет хорошее объяснение того, как оно обычно используется. http://stackoverflow.com/a/18979314/4194964 Обсуждает переменные уровня модуля и то, как файл __init__.py должен быть тонким, чтобы избежать нарушения «явной, лучше неявной» философии –