我写了一个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选项的清晰且可扩展的方法?
答案 0 :(得分:0)
您可以通过打包所有这样的“副词”设置作为一个flags
参数的属性来减少冗长程度。 (使用namedtuple
类型保留它们并提供默认值通常很方便。)
如果中间层可以表示为少量类上的方法,则选项可以存储为属性,其提及可以被吸收到self
中。 (对于以标准方式接受选项的免费函数,可以创建一个帮助程序类,该类通过__getattr__
将这些函数作为方法公开,并自动提供选项。)