在代码中的某个任意位置,存在:
builtins.open = my_open
我无法更改该代码,但它已被破坏。我需要确保所有open
次来电,包括来自其他内置库的 使用原始的打开。我需要的是:
orig_open = get_original_method("open")
builtins.open = orig_open
在Javascript中,我通常通过创建新的窗口框架并从那里获取方法来解决该问题。怎么在python中做到?
答案 0 :(得分:2)
如果此处的问题只是open
功能,您可以随时抓取io.open
,这是它的别名:
import io
builtins.open = io.open
我不知道任何通用的解决方案,即使我不会感到惊讶,如果存在的话。
答案 1 :(得分:0)
我不确定你想要什么,但是你可以使用__builtins__
魔法变量来获取"原作"开放功能:
>>> builtins.open = __builtins__.open
"魔术变量"只是builtins
模块的别名:
>>> __builtins__
<module 'builtins' (built-in)>
>>>
但是,您应该注意这是一个实现细节,其他版本的Python解释器可能不支持它。来自builtins
模块的Python 3文档。
作为实现细节,大多数模块都将名称
__builtins__
作为其全局变量的一部分提供。 [...]由于这是一个实现细节,它可能不会被Python的替代实现使用。