Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在内置模块上获取重写的内置方法的原始版本?_Python_Python 3.x - Fatal编程技术网

Python 如何在内置模块上获取重写的内置方法的原始版本?

Python 如何在内置模块上获取重写的内置方法的原始版本?,python,python-3.x,Python,Python 3.x,在代码中的任意位置,存在以下情况: builtins.open = my_open 我不能改变那个密码,但它坏了。我需要确保任何open调用,包括来自其他内置库的调用,都使用原始的open。我需要的是: orig_open = get_original_method("open") builtins.open = orig_open 在Javascript中,我通常通过创建新的窗口框架并从中获取方法来解决这个问题。如何在python中实现它?如果这里的问题仅仅是打开函数,您可以随时获取它的别

在代码中的任意位置,存在以下情况:

builtins.open = my_open
我不能改变那个密码,但它坏了。我需要确保任何
open
调用,包括来自其他内置库的调用,都使用原始的open。我需要的是:

orig_open = get_original_method("open")
builtins.open = orig_open

在Javascript中,我通常通过创建新的窗口框架并从中获取方法来解决这个问题。如何在python中实现它?

如果这里的问题仅仅是
打开
函数,您可以随时获取它的别名:

import io
builtins.open = io.open

我不知道有任何通用的解决方案,即使有这样的解决方案,我也不会感到惊讶。

我不太确定您想要什么,但您可以使用
\uuuuuuu内置函数
魔术变量获取“原始”打开函数:

>>> builtins.open = __builtins__.open
“magic variable”只是
内置模块的别名:

>>> __builtins__
<module 'builtins' (built-in)>
>>> 
>>\uuu内置__
>>> 
但是,您应该注意,这是一个实现细节,其他版本的Python解释器可能不支持它。来自模块上的Python 3文档

作为一个实现细节,大多数模块的名称
\uuuuuu内置\uuuuuu
都作为其全局模块的一部分提供。[…]由于这是一个实现细节,Python的替代实现可能不会使用它


谢谢。不过,我会等待,看看是否有人能提供一个通用的解决方案。这在控制台中可以正常工作。但如果我把它放在python文件中,它会给我以下错误:
AttributeError:“dict”对象没有属性“open”
我是python新手,不知道该怎么想。@TomášZato一切都对我有用。我使用的是Python 3.5.2。我无法在独立文件中重现该问题。但是,一旦我执行了包含有问题代码的项目,就会出现这个错误。我不知道如何在SO评论的范围内提供更多有用的信息。@TomášZato好吧,你可能只想使用Jim的解决方案。@JimFasarakis Hilliard你真的认为你的编辑改进了问题吗?是否有人可能在
内置标签上搜索?