强制为函数调用赋值

Kir*_*hou 1 python python-3.x

我知道可以通过这种方式替换 buildin 函数。

>>> import os
>>> print(os.system)
<built-in function system>

>>> os.system = "a"
>>> print(os.system)
a
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我不能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
Run Code Online (Sandbox Code Playgroud)

这有可能实现吗?

Mos*_*oye 5

getattr只获得一个属性。除此之外,错误表明函数调用不是有效的赋值目标

你想要的是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>
Run Code Online (Sandbox Code Playgroud)

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