Python 如何为类分配唯一的id/名称以进行非序列化?

Python 如何为类分配唯一的id/名称以进行非序列化?,python,serialization,Python,Serialization,我想为一个类分配一个唯一的id/名称,以便取消序列化。例如,给出以下python dict: data = [{"type": 1, "data": {"key": 333}}, {"type": 2, "data": {"foo": "bar"}] 我想使用以下代码取消序列化数据: class A(object): TYPE = 1 def init_from_dict(self, dict_): pass class B(object): TYPE

我想为一个类分配一个唯一的id/名称,以便取消序列化。例如,给出以下python dict:

data = [{"type": 1, "data": {"key": 333}}, {"type": 2, "data": {"foo": "bar"}]
我想使用以下代码取消序列化数据:

class A(object):
    TYPE = 1
    def init_from_dict(self, dict_):
        pass

class B(object):
    TYPE = 2
    def init_from_dict(self, dict_):
        pass

factories = {A.TYPE: A, B.TYPE: B}

for dump in data:
    factory = factories[dump["type"]]
    object_ = factory()
    object_.init_from_dict(dump["data"])

问题是有其他程序员同时编写类,如
A
。他们可以将相同的
类型
分配给不同的类。我考虑使用uuid来表示一个类。但这似乎有点过分了。因此,我想知道是否有更好的方法为类分配一个唯一的id/名称以进行非序列化?

为什么每个程序员不给他创建的类命名?@shenshei重要的是
TYPE
的值,如果两个不同的类,如
a
B
具有相同的
TYPE
1
,那么这就是
TYPE
的值,然后我无法从
类型
值中自动选择正确的类。是的,但我不明白您为什么要这样做,而不是使用诸如pickle之类的python序列化工具。@shenshei用于取消序列化的数据可能由其他工具生成,我们希望控制它的格式。它也可以是json或xml文件。好的,但我认为使用TYPE属性可能非常容易出错,我认为使用字典映射类型和要实例化的类是更好的选择。