Передача сохраненных аргументов в класс python - PullRequest
0 голосов
/ 10 января 2020

Я хочу написать программу, которая запускает несколько классов. Мой код выглядит как

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__ в своей функции.

1 Ответ

1 голос
/ 10 января 2020

Вы можете попробовать:

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