【问题标题】:Passing stored arguments to a python class将存储的参数传递给 python 类
【发布时间】:2020-04-28 06:14:15
【问题描述】:

我想编写一个运行多个类的程序。我的代码看起来像

list_of_classes = [class1, class2, class3]

def run_class(class_):
    print("Running class ", class_.__name__) #All my classes have such attribute
    x = class_()
    x.doStuff()
    #etc

for class_ in list_of_classes:
    run_class(class_)

问题是,对于某些类,我想传递一些参数(这些参数是可选的)。例如,假设我想为 class1 传递参数iterations = 150

我该怎么做?我的第一个想法是像这样更改list_of_classes

list_of_classes = [(class1, 'iterations=150'), (class2, ''), (class3, '')]

但是如何将元组的第二部分作为参数传递?

我不想像这样将参数直接放在列表中:

list_of_classes = [class1(iterations=150),class2,class3]

因为我将无法在我的函数中使用__name__ 属性。

【问题讨论】:

    标签: python-3.x arguments parameter-passing


    【解决方案1】:

    你可以试试:

    list_of_classes = [
        (class1, [], {'iterations': 150}),
        (class2, [], {}),
        (class3, [], {}),
    ]
    for class_, args, kwargs in list_of_classes:
        run_class(class_, *args, **kwargs)
    

    【讨论】:

    • 此解决方案不起作用。然而,改变字典中元组的第二项实际上是有效的,因为我们正在传递函数**args。非常感谢您的回复。
    • 好的。感谢您的反馈。我从字面上看你的要求。我现在已将解决方案更新为更通用。
    猜你喜欢
    • 2016-04-05
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2012-10-13
    相关资源
    最近更新 更多