Python __init__.py和类

时间:2015-10-27 21:55:50

标签: python python-2.7

在__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?

1 个答案:

答案 0 :(得分:3)

通常__init__.py文件用于初始化您的包,例如导入内容,向路径添加位置,定义版本或使用__all__公开内容,但通常它也是空的。 但是我建议你给它自己的文件更大的类/功能。它更易于维护。