[英]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.