首页 > 解决方案 > 覆盖在导入模块中导入的类

问题描述

我有一个模块,它使用从其他地方导入的类。我想将导入模块使用的类更改为我在程序中定义的类。为了显示:

a.py 模块

class kdtree:
    def get(self):
        return 5

b.py 模块

from a import kdtree
def execute():
    tree = kdtree()
    print(tree.get())

将被执行的 c.py 模块

import b
b.execute()

我不想修改 a.py 或 b.py,但我想修改kdtree为在 c.py 中使用我自己的kdtree类。这在python中可能吗?

标签: pythonpython-3.x

解决方案


您可以在以下位置使用不同的属性覆盖kdtree模块的属性:bc.py

# c.py
import b
class kdtree:
    def get(self):
        return 10
b.kdtree = kdtree
b.execute()

推荐阅读