У меня есть вопрос, связанный с ООП, но он должен быть реализован на Python.
У меня есть файл user_inputs.py со всеми параметрами пользователя.
В моем основном файле яфункция, которая вызывается первой.Эта функция отвечает за чтение всех пользовательских параметров и возвращает словарь, который будет использоваться в остальной части программы.
Мой вопрос: какой самый чистый способ передачи словаря user_parameters всем классам?Я сделал это двумя способами:
Метод 1)
def read_user_parameters():
# code to open and read all parameters etc.
return user_parameters # returns a dictionary with all the user parameters
Class A():
def __init__(self, user_parameters):
self.user_parameters = user_parameters
Class B():
def __init__(self, user_parameters):
self.user_parameters = user_parameters
user_parameters = read_user_parameters()
object_A = A(user_parameters)
object_B = B(user_parameters)
Мне не нравится этот способ, потому что у меня есть десятки классов, которым нужно передать этот аргумент.Поэтому я подумал создать родительский класс с параметрами пользователя:
Метод 2)
Class User_parameters():
def __init__(self, user_parameters):
def read_user_parameters():
# code to open and read all parameters etc.
return user_parameters
Class A(User_parameters):
__init__(self, user_parameters):
super().__init__()
# self.user_parameters comes from the parent class now
Class B(User_parameters):
__init__(self, user_parameters):
super().__init__()
# self.user_parameters comes from the parent class now
object_A = A()
object_B = B()
Однако я предпочитаю метод 2, когда super () инициализируется из класса A и класса Bфункция read_user_parameters (), которая читает файл, будет вызвана дважды (умножьте это в десятки раз).Есть ли лучшее решение, чем метод 1, в котором я вызываю read_user_parameters () только один раз, но не нужно передавать аргумент для всех классов?
Спасибо за потраченное время.