Python:保存动态创建的对象类型

Neo*_*Neo 6 python django types class

我正在使用类型函数动态创建一些对象类型.防爆

return type('DynamicType', (object,), dict)
Run Code Online (Sandbox Code Playgroud)

dict取决于用户输入.现在我希望我能够保存这个返回的类类型,并在不同的会话中使用相同的类.一种可能的方法是将dict保存为文本(或数据库)并再次从该dict创建此对象类型.但是有没有其他方法可以直接保存"类型"?

Gar*_*ett 3

创建一个带有创建、pickle 和 unpickle 动态创建的类型对象的方法的 Factory 类怎么样?下面是一个粗略的开始。使用时,只需用 TypeFactory.pickle(type, fh) 替换对 pickle.dump(type, fh) 的调用,并用 TypeFactory.unpickle(fh) 替换对 pickle.load(fh) 的调用。

import pickle

class TypeFactory(object):
    def __init__(self):
        pass
    @staticmethod
    def create_type(name='DynamicType', dict={}):
        return type(name, (object,), dict)
    @staticmethod
    def pickle(t, fh):
        dict = t.__dict__.copy()
        name = t.__name__
        for key in dict.keys():
            if key.startswith('__') and key.endswith('__'):
                del dict[key]
        pickle.dump((name, dict), fh)
    @classmethod
    def unpickle(cls, fh):
        name, dict = pickle.load(fh)
        return cls.create_type(name, dict)
Run Code Online (Sandbox Code Playgroud)