我有一个名为customclass的基类,该基类动态加载第二个类并在其上调用方法。我在这里使用第二个答案:How to dynamically load a Python class来实现这一点,在我的自定义类中动态加载第二个类的方法如下:
def executedf2in(self, dfin1, dfin2):
custom_class = locate(self.custom_class_name)
dfresult = custom_class.df2in(dfin1, dfin2, self.custom_params)
这是custom_class代码:
class CustomWork(object):
def df2in(self, df1, df2, custom_params):
dfchanged = pd.concat([df1, df2], sort=True)
return dfchanged
我收到此错误:
File "/home/david/git/testapp/app/etl/customclass.py", line 54, in executedf2in
dfresult = custom_class.df2in(df1, df2, self.custom_params)
AttributeError: 'module' object has no attribute 'df2in'
当我检查创建的CustomWork实例时,它显示在检查窗口的“特殊变量”下,而在CustomWork类下则没有显示任何功能
<module 'app.test.custom_work_test' from '/home/david/git/testapp/app/test/custom_work_test.py'>
<class 'app.test.custom_work_test.CustomWork'>
如何获取其中定义的函数动态加载类的信息?
答案 0 :(得分:0)
最后,我发现locate无法使用函数实例化一个类,仅实例化了该类。因此,我将要动态加载的类转换为一个简单的模块,然后实例化了这些函数并使其可执行。