Моя структура проекта следующая
|-- project/
|-- run.py
|-- classes/
|-- module_defining_class_a.py [=> class classA():...]
|-- module_defining_class_b.py [=> class classB():...]
|-- config.yaml
, где run.py
инициализирует объект ClassA
, что, в свою очередь, инициализирует объект ClassB
.
Теперь run.py
также анализирует аргумент командной строки, указывающий на файл config.yaml
. Словарь, полученный в результате синтаксического анализа этого файла .yaml
, содержит ключи и значения, необходимые для ClassA
и ClassB
при их инициализации.
У меня такой вопрос: как мне лучше всего использовать этот аргумент командной строки для обоих классов?
Очевидным решением было бы передать его в метод __init__
из ClassA
и передать ему словарь config
в метод __init__
из ClassB
; но это кажется нелегким, потому что тогда аргумент будет передан как водопад. Я бы предпочел получить доступ к аргументу командной строки из каждого класса при его создании, не передавая его методу __init__
повторно в качестве аргумента.
Правильно ли я считаю, что передача аргумента через несколько уровней не является хорошим дизайном? Если так, что может быть лучшим решением?