我使用 python 的工作越多,我就越想以 python 的方式来做,即尽量避免 isinstance 查询等。我正在开发一个用于数值模拟的科学参数探索框架。
我的工作有两个硬性限制:首先,我需要能够完全按照第一次运行的方式重复我存储到磁盘的特定模拟。其次,hdf5/pytables 格式的数据应该很好并且可读。
这两个概念有点对立。一旦我将内容存储为 pytables 数据,就会丢失一些信息。例如,重新加载 python int 后变成 numpy.int64。如果您想重新运行数值模拟,这可能会出现问题,因为在某些情况下,变量与 int 的乘法可以正常工作,但在与 numpy.int64 一起使用时会中断。例如,如果您使用尖峰神经网络模拟器 BRIAN,就会出现这种情况。
因此,一个简单的答案是简单地腌制所有东西并恢复原状。然而,这不适用于可读的 hdf5 数组或表数据的想法。
所以我想到的是将原始数据格式作为 hdf5 属性存储到相应的表或数组中,并使用此信息来重构原始数据。首先,一般来说这是一个好主意,其次,最pythonic的方法是什么?
例如,这个怎么样:
original_class_name = data.__class__.__name__
# do the storage of data and the original_class_name
{...}
# load the hdf5data and reconstruct it
reconstructed_data = eval(original_class_name+'(hdf5data)')
对我来说,这似乎太hacky了。