有没有"pythonic"方法来调整函数的定义?



我正在处理一个经常使用useful_function(obj)的模块。我的问题是,我希望useful_function的行为与正常情况略有不同。目前,我正在使用以下方法来解决我的问题:

original_useful_function = useful_function
def useful_function(obj):
if meets_criteria(obj):
return my_desired_result(obj)
return original_useful_function(obj)

然后我就可以开始我的工作了,因为我知道useful_function的每一次调用都会按照我想要的方式进行。然而,我很好奇是否有更好的方法可以做到这一点。

我只想定义一个lambda,但仅此而已,我认为没有简单的方法可以逃脱重新分配useful_function,除非该方法在一个类中,并且我们用__getattribute__做了一些魔术。。。

original_useful_function = useful_function
useful_function = lambda obj: my_desired_result(obj) if meets_criteria(obj) else original_useful_function(obj)

如果你做了很多这样的工作,你可以考虑一个装饰师。

除此之外,我认为你所掌握的是清晰直接的。

顺便说一句,看起来你可能正在使用从foo导入*?通常最好使用import-foo。

最新更新