希望用户实例化一个表示transeint的类,同时自动访问所表示的每个变量的成员项(最多200个变量)。变量类实例集将基于基于文件的输入数据是动态的,并且希望使用文件提供的变量名来创建可以使用自然命名方案访问的这些变量实例的集合。实际上,变量类隐藏了数据存储位置的细节以及存储的独立变量(即时间)。以下伪代码表示最终用户可能表达的随机行。在某些情况下,后期处理可能会更广泛。
tran1 = CTransient('TranData', ...)
Padj = tran1.pressPipe1 + 10 # add 10 bar to a pressure for conservatism
Tsat = TsatRoutine( tran1.tempPipe1 )
MyPlotRoutine( tran1.tempPipe1, tran1.tempPipe2 )
其中在输入数据文件中定义的pressPipeX和tempPipeX名称以及相应的numpy数据向量在“TranData”文件输入文件中指定,并且是CVariable类的实例。
有关如何动态构建表示瞬态变量的实例集的帮助,我们将不胜感激。
答案 0 :(得分:2)
您对尝试做的事情的描述并不完全清楚,但自动命名变量something1,something2等通常是一个坏主意。改为使用列表:
transientvariables = []
transientvariables.append(makenewtransientvariable())
# ...
for tv in transientvariables:
print tv
编辑好的,我想我知道你得到了什么,虽然你的解释仍然不容易阅读。你有一系列管道,每个管道记录一个温度和压力的时间序列,对吗?
最简单的方法是使用字典:
transients["tempPipe1"]
或嵌套词典:
transients["temp"]["Pipe1"]
或者您可以覆盖您的类“__getattr__
方法,以便它在字典中查找,您可以执行以下操作:
transients.tempPipe1
编辑2:覆盖__getattr__
看起来有点像这样:
def __getattr__(self, name):
if name in self.varMap:
return self.varMap[name]
raise AttributeError