我知道buildin函数可以用这种方式替换。
>>> import os
>>> print(os.system)
<built-in function system>
>>> os.system = "a"
>>> print(os.system)
a
出于某种原因,我无法直接在源代码中编写os.system
。然后我尝试了getattr
。但它不起作用。
>>> import os
>>> print(getattr(os, "system"))
<built-in function system>
>>> getattr(os, "system") = "a"
File "<stdin>", line 1
SyntaxError: can't assign to function call
这有可能实现吗?
答案 0 :(得分:3)
getattr
只获取一个属性。除此之外,错误表明函数调用不是有效的assignment target。
你想要的是setattr
:
>>> import os
>>> os_system = os.system
>>> setattr(os, 'system', 'a')
>>> getattr(os, 'system')
'a'
>>> setattr(os, 'system', os_system)
>>> getattr(os, 'system')
<built-in function system>
我希望你有充分的理由这样做。