gpt4 book ai didi

python - 可以通过调用另一个函数来覆盖一个函数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:53:02 24 4
gpt4 key购买 nike

假设您有函数 ab。您能否通过调用函数 a 将函数 b 替换为另一个函数?

我知道你可以做 b=a(b),但是你能用 a(b) 来改变 b 吗?

最佳答案

函数和方法分别是模块和类的属性。因此,您可以修改 required 属性以指向另一个函数。

>>> __name__
'__main__'
>>> def a():
... print 'a'
...
>>> def b():
... print 'b'
...
>>> import sys
>>> sys.modules['__main__'].b = a
>>> b()
a

对于一个类:

>>> class A(object):
... def a(self):
... print 'a'
... def b(self):
... print 'b'
...
>>> A.b = A.a
>>> x = A()
>>> x.b()
a

如果您有一个变量保存要替换的名称,则使用 setattr,例如:

setattr(sys.modules['__main__'],'b',a)
setattr(A,'b',A.a)

只需用您的变量替换字符串 ('b')。

不确定为什么要这么做?这会使代码困惑。

关于python - 可以通过调用另一个函数来覆盖一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com