首页 > 解决方案 > 需要帮助在 Python 中创建类层次结构

问题描述

我有一个数据层次结构,我想使用类而不是硬编码来构建它。结构如下:

  1. 单元(有名称、缩写、子系统[5种不同类型的子系统])

  2. 子系统(有类型,框图(照片),ParameterModel[20组不同的parameterModels])

  3. ParameterModel(大约 30 个参数,将具有 [参数名称、值、单位和模型索引])

我不确定如何使用类来做到这一点,但到目前为止我所做的工作是创建嵌套字典。

{'Unit':{'Unit1':{'Subsystem':{'Generator':{Parameter:{'Name': param1, 'Value':1, 'Units': 'seconds'}

像这样,但有 10-15 个单元和 5-6 个子系统,每个子系统有 30 个左右的参数。我知道使用字典不是最好的方法,但我无法弄清楚类共享结构或从哪里开始构建类结构。

我希望能够在我构建的 tkinter gui 中创建、读取、更新和删除参数,以及导出/导入这些系统参数并对它们进行计算。我可以处理计算和导入导出,但我需要创建将构建此结构并能够引用每个单独的单元/子系统/参数/值/等的类

我知道很多,但有什么建议吗?我一直在研究工厂和抽象工厂模式,希望试图弄清楚如何创建代码结构,但无济于事。我有 matlab、visual basic、c++ 和各种 arduio 项目的经验,所以我知道最基本的编程,但是如果不使用 Unit1_Generator_parameterName_parameter = ____ 这样的大名称对每个参数进行硬编码,我无法以抽象的方式弄清楚如何以抽象方式进行操作我真的不想那样做。

谢谢

编辑:这是我使用字典完成实现的一种方法,但我想使用一个可以获取列表并制作一堆空属性的类来执行此操作,并且通常可以像 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)

并且在每个 dict[unit][Gen][ParamNames] 里面应该有一个包含 Value、units(seconds、degrees 等)、description 和 CON 的 dict(#basically 在我们使用的另一个程序的索引中)

标签: python-3.xclassmodel-view-controllerdesign-patternshierarchy

解决方案


推荐阅读