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

标签 python dynamic

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

相关文章:

python - 在 python 中记录/存储强化学习实验的结果/指标的好方法?

python - 在 Windows 上的 Emacs 中运行 Python

python - 如何在 python 中的二进制矩阵中跟踪 1 的所有唯一路径?

php - 动态日期选择(Php/JS)

dynamic - 在 CSS 中以动态宽度居中内联 block

python - 为什么我得到 "dlib isn' t going to use CUDA"when I compile dlib python interface

python - 检测复选框是否被勾选的最佳方法

java - 使用 Java 动态加载类

amazon-web-services - Terraform - 循环遍历对象列表的动态 block

mysql - 具有局部变量的动态 MySQL