我想要实现的是:
b.py(可能在我无法修改的第三方包中):
from xxx import A
class B:
def __init__():
self.a = A()
我实际执行的文件:
执行.py
class A:
def __init__():
print("init my own A")
from somepackage.b import B
(do something to substitute A in B with my A above)
b = B()
我想实现这一点,当我运行
execute.py
时,在A
的init中使用我自定义的b
,而不是来自A
的原始xxx
。并且 b.py
不应更改。
有没有办法实现这个目标?
这听起来像是你做错了什么,但通过猴子修补很容易完成:
import somepackage.b
orig_a = somepackage.b.A
somepackage.b.A = A
b = somepackage.b.B()
...
somepackage.b.A = orig_a