我正在编写一个人力资源计算程序,每个国家/地区的税收/福利计算都大不相同,因此我为每个国家/地区提供了单独的模块,例如USA_HR_Functions.py
、Japan_HR_Functions.py
等(一共36个)。
在每个模块中,我都有函数(同名)- 薪水、税收、福利等。
据此,我正在编写一个循环遍历每个员工并检查他们的信息以确定要使用的计算,例如
employee_1
在日本,因此它将使用Japan_HR_Functions.salary()
、Japan_HR_Functions.tax()
等。employee_2
在美国,因此它将使用USA_HR_Functions.salary()
、USA_HR_Functions.tax()
等。
我已经把所有的东西都写好了,如果我一次做一个国家,它就可以了。这意味着一切都使用来自一个模块的功能。我想一次性遍历所有员工。
最佳答案
面向对象的方法是为员工(和其他业务对象)管理创建(可能是抽象的)类,声明用于计算薪水、税收、福利等的所有方法。
然后在每个模块中定义专门针对该国家(或国家集团)的实现类。
完成此操作后,您可以通过基类遍历员工,OO 魔术将选择适当的操作。
能够创建员工对象的简单实现是拥有按国家/地区名称索引的实现类映射。
根据您实际用例的复杂性,这可能是矫枉过正或最易于维护的方式...
关于python - 是否可以根据变量从大量模块中选择一个函数(不使用 if,变化太多)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59114461/