强制为函数调用赋值

时间:2016-10-26 10:44:46

标签: python python-3.x

我知道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

这有可能实现吗?

1 个答案:

答案 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>

我希望你有充分的理由这样做。