如何在 .py 文件中替换导入的 python 类而不修改文件本身?

问题描述 投票:0回答:1

我想要实现的是:

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
不应更改。 有没有办法实现这个目标?

python python-import python-class
1个回答
0
投票

这听起来像是你做错了什么,但通过猴子修补很容易完成:

import somepackage.b
orig_a = somepackage.b.A
somepackage.b.A = A
b = somepackage.b.B()
...
somepackage.b.A = orig_a
© www.soinside.com 2019 - 2024. All rights reserved.