存储包含功能的数据

时间:2019-05-01 12:11:29

标签: python oop design-patterns

我拥有的是数据的列表类型,每种类型均由名称标识。例如“长度”和“重量”。这些用于读取和写入文件中的字节。每个度量标准都存储不同数量的字节,因此我有一个Metric类,该类存储例如描述和度量标准的字节长度。然后,我可以保留可以随时添加到其中的度量标准定义的JSON文件或XML文件。

我现在想通过向类添加to_bytes和from_bytes方法来区分如何读取和写入这些字节。我可以将函数定义作为字符串存储在JSON文件中,而只需eval()即可,或者我可以为每个指标编写单独的子类。

将函数定义与其他数据一起存储的最佳方法是什么?我愿意接受任何建议,但是最好的解决方案是使手动添加新指标到集合的工作变得容易。

1 个答案:

答案 0 :(得分:0)

您可以像其他所有东西一样腌制一个函数

import pickle

def foo(x):
    return x*x

with open('myfile', 'wb') as f:
    pickle.dump(foo, f)

with open('myfile', 'rb') as f:
    moo = pickle.load(f)

print(moo(3))

输出:

9

也适用于整个班级:

import pickle

class MyClass:
    def foo(x):
        return x*x

with open('myfile', 'wb') as f:
    pickle.dump(MyClass, f)

with open('myfile', 'rb') as f:
    LoadedClass = pickle.load(f)

print(LoadedClass.foo(3))

输出:

9