我有三个模块:
in_mod.py
class IN(object):
def __init__(self):
print("i am the original IN")
module1.py
from in_mod import IN
class C(object):
def __init__(self):
cl = IN()
和module2.py
from module1 import C
class IN2(object):
def __init__(self):
print("I am the new IN")
C()
import in_mod
in_mod.IN = IN2
C()
import module1
module1.IN = IN2
C()
当我使用module1.IN = IN2
时,我得到了monkey修补IN
类并用IN2
类替换它的期望行为。你知道吗
我想了解在这种情况下,in_mod.IN = IN2
和module1.IN = IN2
之间的根本区别是什么。你知道吗
我是一个相关的职位。你知道吗
from module import IN
创建引用module.IN
的局部变量;module.IN
和IN
是对同一类的两个独立引用。IN = IN2
更改本地引用,但module.IN
(由module.C
使用)继续引用同一类。你知道吗更新
在您的编辑中,
module1.IN
是module1
命名空间中的全局变量,最初引用了in_mod
中的类,但与module
命名空间中的全局in_mod.IN
不同。更改其值根本不会影响in_mod
。无法通过module1
直接访问in_mod
的命名空间,因为您不导入整个模块,只导入模块中的一个值。你知道吗相关问题 更多 >
编程相关推荐