У меня есть иерархия данных, которую я хотел бы построить, используя классы вместо жесткого кодирования. Структура выглядит следующим образом:
Единица (имеет имя, аббревиатуру, подсистемы [5 различных типов подсистем])
Подсистема (имеет тип, блок-схему (фото), ParameterModel [20 различных наборов параметровМодель])
ParameterModel (около 30 параметров, которые будут иметь [имя параметра, значение, единицы измерения и индекс модели])
Я не уверен, как это сделать с помощью классов, но что я До сих пор проделал определенную работу по созданию вложенных словарей.
{'Unit': {'Unit1': {'Subsystem': {'Generator': {Parameter: {'Name': param1, 'Value': 1, 'Units': 'seconds'}
, как это, но с 10-15 единицами и 5-6 подсистемами и примерно 30 параметрами на подсистему. Я знаю, что использование словарей - не лучший способ узнать об этом go, но я не могу понять структуру разделения классов или с чего начать построение структуры классов.
Я хочу иметь возможность создавать, считывать, обновлять и удалять параметры в построенном мной tkinter gui, а также экспортировать / импортировать эти системные параметры и выполнять на них вычисления. Я могу обрабатывать расчеты и импорт-экспорт, но мне нужно создать классы, которые будут строить эту структуру и иметь возможность ссылаться на каждую отдельную единицу / подсистему / параметр / значение / и т.д. c
Я знаю, что это много но какой совет? Я изучал фабричные и абстрактные фабричные шаблоны в надежде выяснить, как создать структуру кода, но безрезультатно. У меня есть опыт работы с Matlab, Visual Basi c, C ++ и различными проектами Arduio, поэтому я знаю большинство программ Basi c, но эту структуру класса наследования я не могу понять, как сделать это абстрактным способом без жесткого кодирования каждого параметра с гигантские имена, такие как Unit1_Generator_parameterName_parameter = ____, и я действительно не хочу этого делать.
Спасибо, -A
РЕДАКТИРОВАТЬ: Вот один способ, которым я сделал реализацию, используя словарь, но я хотел бы сделать это, используя класс, который может взять список и собрать кучу пустых атрибутов, и они могут быть редактируемыми / вызываемыми, как правило, как setParamValue (unit, susystem, param), где я могу передать единицу подсистеме, а затем параметр, такой как 'Td', и затем иметь возможность изменить значение ключа, значение пара в этой иерархии.
def create_keys(list):
dict = {key: None for key in list}
return dict
unit_list = ['FL','ES','NN','SF','CC','HD','ND','TH'] #unit abbreviation
sub_list = ['Gen','Gov','Exc','PSS','Rel','BlkD']
params_GENROU = ["T'do","T''do","T'qo","T''qo",'H','D','Xd','Xq',"Xd'","Xq'","X''d=X''q",'Xl','S(1.0)','S(1.2)','Ra'] #parameter names
dict = create_keys(unit_list)
for key in dict:
dict[key] = create_keys(sub_list)
dict[key]['Gen'] = create_keys(params_GENROU)
и внутри каждого диктанта [юнит] [Gen] [ParamNames] должен быть дикт, содержащий значение, единицы (секунды, градусы и т. Д. c), описание и CON (# в основном в индексе) для другой программы мы используем)