在高级功能中访问低级功能选项的清晰方法?

时间:2018-10-08 17:32:11

标签: python oop architecture options

我写了一个Python程序包,该程序包经常对低级函数low_level_a(arg)进行间接调用。我所说的“间接”是指该函数通常隐藏在高层函数和类的几层后面。

我现在想实现函数low_level_b(arg)的备用版本,该版本采用相同类型的参数并返回相同类型的输出。我的目标是允许用户在调用最高级别的函数时在使用low_level_a(arg)low_level_b(arg)之间进行切换。

我的第一个想法是为低级函数编写一个可选参数,以在版本之间切换:low_level(arg, option='a')。但是,据我所知,这迫使我向每个中间函数添加可选参数option='a',这有可能导致调用low_level

我的直觉是,这会混淆中间函数,尤其是如果将来我想继续添加此类可选参数时。

什么是允许用户选择各种版本的low_level选项的清晰且可扩展的方法?

1 个答案:

答案 0 :(得分:0)

您可以通过打包所有这样的“副词”设置作为一个flags参数的属性来减少冗长程度。 (使用namedtuple类型保留它们并提供默认值通常很方便。)

如果中间层可以表示为少量类上的方法,则选项可以存储为属性,其提及可以被吸收到self中。 (对于以标准方式接受选项的免费函数,可以创建一个帮助程序类,该类通过__getattr__将这些函数作为方法公开,并自动提供选项。)