繁体   English   中英

运行时替换其他class方法中的路径

[英]Replace path in method of other class during runtime

我在不同的模块中有两个类,一个 class 包含实际功能,另一个包含测试功能。

ModuleA:
    def __init__(self, path):
        self.import_path = None

    def import_data(self):
        self.import_path = sales.__path__["data"]
        self.input = pd.read_excel(
            self.import_path,
            index_col=False,
            engine="openpyxl",
            dtype=object,
        )
        return self.input


ModuleB:
    def __init__(self, path):
        self.import_test_path = None

    def test_import_data(self):
        self.import_test_path = self.__path__["data"]

        # Replace actual data paths with test data paths
        ModuleA.import_path = self.import_test_path

        ModuleA.import_data()

问题是,虽然我在ModuleB中定义了一个测试路径,但我仍然无法覆盖在ModuleA中实例化的import_path,即使我调用该方法,因为路径是在方法中定义的。 有没有办法用 ModuleA 的路径替换此路径,例如通过 Monkeypatching? 谢谢!

已找到答案。 我只需要将硬编码路径放在 ModuleA 方法本身之外并放入其 init 方法中。 然后,当只调用方法而不实例化 class 时,我可以通过正确的路径:

ModuleA:
    def __init__(self, path):
        self.import_path = sales.__path__["data"]

    def import_data(self):
        self.input = pd.read_excel(
            self.import_path,
            index_col=False,
            engine="openpyxl",
            dtype=object,
        )
        return self.input

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM