传递变量参数:python

时间:2019-06-06 10:05:42

标签: python python-3.x

我想编写一个接受文件和类名并对其进行操作的代码。一个示例将比我可能更清楚地解释它:

我有一个文件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])行给了我minMaxpca类。

现在的问题是,如果__init__仅接受一个参数,则此代码可以正常工作。但是,如果需要多个参数,该怎么办?例如,pca可能是:

class pca():
    def __init__(df,metaData):
    # does something

在这种情况下我该怎么办?任何帮助,将不胜感激。

如果问题不清楚,请发表评论。那我将提供更详细的解释。谢谢...

1 个答案:

答案 0 :(得分:1)

也许您应该使用传播算子。也许这个片段有帮助:

class X:
  def __init__(self, a, b):
    self.a = a
    self.b = b

args = [2, 'hellow']
x = X(*args)

编辑:这只是一般方法的概述。有关此方法如何适用于此特定问题的更全面概述,请检查有关此答案的讨论。