【发布时间】:2015-09-21 06:43:59
【问题描述】:
有没有办法在多线程环境中在同一个 python 会话中以相同的名称但在不同的范围内导入一个包两次?
我想导入包,然后重写它的一些函数来改变它的行为,只有在特定的类中使用。
例如,有没有可能实现这样的目标?
import mod
class MyClass:
mod = __import__('mod')
def __init__():
mod.function = new_function # override module function
def method():
mod.function() # call new_function
mod.function() # call original function
这可能看起来很奇怪,但在这种情况下,派生类的用户不必更改其代码即可使用改进的包。
【问题讨论】:
-
关于这个问题,我想起了我的程序。就像这样:
import filename ; print('import')。所以这个程序将自行导入/运行。我认为这会造成无限循环,但它只打印两次import(所以它只导入一次)。 -
为什么需要
mod = __import__('mod')而不仅仅是mod = mod?