如何在外部重写内部方法功能

时间:2019-06-17 03:48:44

标签: python

如何修改代码

def mackfunc(a):
    def func(b):
        return a+b
    return func

f = mackfunc(1)
print(f(1))
print(f(2))

输出为2和3

def mackfunc(a):
    def func(b):
        return a+b
    return func

f = mackfunc(1)

在这里添加一些东西

print(f(1))
print(f(2))

我希望这里的输出是3和4

2 个答案:

答案 0 :(得分:0)

不能。 func是一个局部变量,不会受到函数外部的干扰。您可以完全重新定义mackfunc,也可以将其包装。

# redefine
def mackfunc(a):
    def func(b):
        return a + b + 1
    return func

# wrap
orig_mackfunc = mackfunc
def mackfunc(a):
    orig_func = orig_mackfunc(a)
    def func(b):
        return orig_func(b) + 1
    return func

答案 1 :(得分:0)

您可以在内部函数中使用自定义函数,然后在以后重新定义它

def custom(arg):
    return arg

def mackfunc(arg):
    def func(b):
        return custom(arg)+b
    return func


f = mackfunc(1)
print(f(1))
print(f(2))
print()
def newcustom(arg):
    return arg + 1
custom = newcustom

print(f(1))
print(f(2))

输出

2
3

3
4

希望这会有所帮助。 :)