我想序列化类本身而不是对象实例。
例如,如果我这样做
class Foo:
pass
json.dumps(Foo)
它会抛出一个错误,说Foo不是JSON可序列化的。 甚至可以用python做到这一点吗?
答案 0 :(得分:0)
有点晚了,但实际上你无法直接序列化一个类。序列化是将对象转换为字符串以进行存储和传输的行为。在你的情况下,类声明Foo已经是一个文本文件; Foo.py(或者你把它放在哪里)。
序列化库通常将对象的类保留在引用中,以便同一个程序quand保存并加载一个对象,并且仍然知道它是一个Foo实例。但是,如果我编写自己的小应用程序不包含Foo类,那么反序列化数据会给我一些非常无用的东西。
根据您的目的,有其他选择。
对于最后一个选项,您在某种程度上想要构建一类类:
Class model:
def __init__(self, class_name, fields):
self.class_name = class_name
self.fields = fields
Class model_instance:
def __init__(self, model, values):
self.fields = {}
# add values to the dict with fields as keys, based on the model
...
实例化“模型”时,实际上是在创建对象的模型。然后会有多种技巧来正确实现替代实例化系统,此时需要进行一些研究。
我理解这篇文章有点陈旧,但我想在回答我不知道的是Stack Overflow的全部内容时回答我所知道的事情!