gpt4 book ai didi

python - 一组动态成员的自然命名方案

转载 作者:行者123 更新时间:2023-12-01 06:12:45 25 4
gpt4 key购买 nike

用户希望实例化一个表示 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 类的实例。

有关如何动态构建表示 transient 变量的实例集以便可以访问它们的帮助,我们将不胜感激。

最佳答案

您对要执行的操作的描述并不完全清楚,但自动命名变量 some1、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

关于python - 一组动态成员的自然命名方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com