python - 是否可以根据变量从大量模块中选择一个函数(不使用 if,变化太多)?

标签 python python-3.x

我正在编写一个人力资源计算程序,每个国家/地区的税收/福利计算都大不相同,因此我为每个国家/地区提供了单独的模块,例如USA_HR_Functions.pyJapan_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/

相关文章:

python - 如何从 func1 中获取 var1 并在 func2 中使用它而不在 func1 中运行两次

python - 是否可以在 Python 中更改单个像素的颜色?

python - 使用 python 显示顶点的 3D 法向量

python - 如何在 GAE 上使用 python 将 XML 文件加载到字符串中?

python - 为什么我无法导入使用 easy_install 安装的软件包?

python - 我正在使用 python3,其中有字典列表

python - 从 R 到 Python : define multiple columns from multiple columns in a pandas dataframe

python - UnboundLocalError : local variable referenced before assignment - except it isn't? 全局/局部范围问题

python - 如何使用 Beautiful Soup 只选择多个表中的一个

python - 这个 C 结构体如何翻译成 Python