有没有一种“ pythonic”的方法来调整函数的定义?

时间:2020-10-14 21:50:04

标签: python

我正在使用一个经常使用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的调用都会按照我想要的方式进行。但是,我很好奇是否有更好的方法可以做到这一点。

2 个答案:

答案 0 :(得分:0)

我只是可以考虑定义一个lambda,但仅此而已,而且我认为没有一种简单的方法可以避免重新分配有用的函数,除非该方法在类中并且我们使用__getattribute__做一些魔术...

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

答案 1 :(得分:-1)

如果您要执行很多操作,则可以考虑使用装饰器。

除此之外,我认为您所拥有的是明确而直接的。

顺便说一句,看来您可能正在使用来自foo的import *?通常最好使用import foo。