首页 > 解决方案 > 是否可以根据变量从大量模块中选择一个函数(不使用 if,有太多变化)?

问题描述

我正在编写一个人力资源计算程序,并且每个国家/地区的税收/福利计算有很大不同,因此我为每个国家/地区设置了单独的模块,例如USA_HR_Functions.pyJapan_HR_Functions.py等(总共有 36 个)。

在每个模块中,我都有功能(同名)——工资、税收、福利等。

由此,我正在编写一个循环遍历每个员工并检查他们的信息以确定要使用的计算,例如

我已经把所有东西都写出来了,如果我一次只做一个国家,它就可以工作。这意味着一切都使用来自一个模块的功能。我想一口气遍历所有员工。

标签: pythonpython-3.x

解决方案


OO 方法是为员工(和其他业务对象)管理创建(可能是抽象的)类,声明用于计算工资、税收、福利等的所有方法。

然后在每个模块中定义专门针对该国家(或国家组)的实现类。

完成后,您可以通过基类遍历员工,OO 魔法将选择正确的操作。

能够创建员工对象的简单实现是拥有一个由国家名称索引的实现类的映射。

根据您实际用例的复杂性,这可能是矫枉过正或最可维护的方式......


推荐阅读