传递变量参数:python

2024-05-23 19:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个文件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__只接受一个参数,那么这段代码就可以很好地工作。但是,如果它需要1个以上的参数呢?例如,pca可能是:

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

在这种情况下我该怎么办?任何帮助都将不胜感激。你知道吗

如果问题不清楚,请发表评论。那么我会提供更详细的解释。谢谢。。。你知道吗


Tags: pyimportdfvisualiseinitdefsomethingclass
1条回答
网友
1楼 · 发布于 2024-05-23 19:34:23

也许你应该使用扩展操作符。也许这个片段有帮助:

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

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

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

相关问题 更多 >