假设您有函数 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')。
不确定为什么要这么做?这会使代码困惑。
