Skip to main content
 首页 » 编程设计

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

2025年05月04日9jyk

假设您有函数 a 和 b。您能否通过调用函数 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')。

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