python - 是否可以根据变量从大量模块中选择一个函数(不使用 if,有太多变化)?
问题描述
我正在编写一个人力资源计算程序,并且每个国家/地区的税收/福利计算有很大不同,因此我为每个国家/地区设置了单独的模块,例如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 方法是为员工(和其他业务对象)管理创建(可能是抽象的)类,声明用于计算工资、税收、福利等的所有方法。
然后在每个模块中定义专门针对该国家(或国家组)的实现类。
完成后,您可以通过基类遍历员工,OO 魔法将选择正确的操作。
能够创建员工对象的简单实现是拥有一个由国家名称索引的实现类的映射。
根据您实际用例的复杂性,这可能是矫枉过正或最可维护的方式......
推荐阅读
- powershell - Powershell:Get-ChildItem 处理批量文件的性能
- c++ - docker 找不到那里的库
- c - 有没有办法在不使用库函数的情况下返回从某个索引开始的字符串
- html - HTML:所需选择标签的默认选项
- javascript - 在 html元素中使用本地图像源
- c# - 由于 SocketException 导致简单的内部 HTTP GET 请求失败:现有连接被远程主机强制关闭
- azure - 带有消费计划的 Azure Function 应用程序中的时区问题 (Windows)
- janusgraph - ConfiguredGraphFactory.getGraphNames(); 如果未在 gremlin-javascript 中设置遍历对象,则不返回结果
- amazon-web-services - 将 AWS MediaConvert 作业模板输出到同一目录
- python - 使用 class_weight 来平衡 data-.fit_generator()