我想编写一个接受文件和类名并对其进行操作的代码。一个示例将比我可能更清楚地解释它:
我有一个文件test.py
,其格式为:
import pandas as pd
from preProcess import preProcess
from visualise import visualise
df=pd.read_csv('input.csv')
li1=["preProcess","visualise"]
li2=["minMax","pca"]
for i in range(len(li1)):
x = getattr(getattr(__import__(li1[i]),li1[i]), li2[i])
a=x(df)
# does some more stuff...
li1
包含模块的名称,li2
包含相应模块中的类的名称。
为了更清楚一点,preProcess.py
如下:
class minMax():
def __init__(df):
# does something
和visualise.py
如下:
class pca():
def __init__(df):
# does something
第x = getattr(getattr(__import__(li1[i]),li1[i]), li2[i])
行给了我minMax
和pca
类。
现在的问题是,如果__init__
仅接受一个参数,则此代码可以正常工作。但是,如果需要多个参数,该怎么办?例如,pca
可能是:
class pca():
def __init__(df,metaData):
# does something
在这种情况下我该怎么办?任何帮助,将不胜感激。
如果问题不清楚,请发表评论。那我将提供更详细的解释。谢谢...
答案 0 :(得分:1)
也许您应该使用传播算子。也许这个片段有帮助:
class X:
def __init__(self, a, b):
self.a = a
self.b = b
args = [2, 'hellow']
x = X(*args)
编辑:这只是一般方法的概述。有关此方法如何适用于此特定问题的更全面概述,请检查有关此答案的讨论。