Передача аргументов из функции в метод класса - PullRequest
2 голосов
/ 12 марта 2020

Я думаю, что это программирование 101, но класс, который я пропустил:

У меня есть класс, где примерно 50 аргументов по умолчанию передаются в init . Затем пользователь может предоставить различные значения для этих аргументов во время создания или изменить обычные атрибуты в обычном порядке.

Я хотел бы создать функцию, возможно, вне этого класса. это позволяет пользователю создавать несколько версий класса, а затем возвращать полезную информацию. Однако каждая итерация класса в функции будет иметь разные аргументы для конструктора.

Как лучше всего разрешить пользователю функции предоставлять аргументы функции, которые передаются конструктору класса.

Вот что я пытаюсь достичь:

class someClass(object):
    def __init__(self, a=None, b=None, c=None, d=None, e=None):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e

    def some_method(self):
        # do something
        return # something useful

simulations = {'1': {'a':3, 'e':6},
               '2': {'b':2, 'c':1}}

def func(simulations=simulations):
    results = []
    for sim in simulations.keys():
        sc = someClass(simulations[sim]) # use the arguments in the dict to pass to constructor
        results.append(sc.some_method())
    return results

1 Ответ

5 голосов
/ 12 марта 2020

Вы можете использовать ** - распаковать словарь в именованные ключевые слова :

sc = someClass(**simulations[sim])

предоставит 3 как a, 6 как e в первый раз, затем 2 как b и 1 как c во второй раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...