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

Clear way of accessing options to low level functions in high level functions?

我写了一个 Python 包,它频繁地间接调用低级函数 low_level_a(arg)。我所说的 'indirect' 的意思是该功能通常隐藏在几层更高级别的功能和 类.

后面

我现在想实现该函数的另一个版本 low_level_b(arg),它采用相同类型的参数和 returns 相同类型的输出。我的objective是让用户在调用最高级函数时可以在low_level_a(arg)low_level_b(arg)之间切换。

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

的中间函数添加可选参数 option='a'

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

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

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

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