在同一个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”(所以它只导入了一次自己)。 - Remi Guanmod = __import__('mod')
而不是简单的mod = mod
? - Pynchia