如何为python自定义类进行类型转换

考虑一个班级;

class temp:
    def __init__(self):
        pass

我做了一个对象;

obj = temp()

将其转换为字符串;

strObj = str(obj)

现在,我如何将strObj转换为临时类的对象?

org = temp(strObj)

最佳答案 正如Anand在评论中所指出的,您正在寻找的是对象序列化和反序列化.实现这一目标的一种方法是通过pickle(或cPickle)模块:

>>> import pickle

>>> class Example():
...     def __init__(self, x):
...             self.x = x
...
>>> a = Example('foo')
>>> astr = pickle.dumps(a) # (i__main__\nExample\np0\n(dp1\nS'x'\np2\nS'foo'\np3\nsb.
>>> b = pickle.loads(astr)
>>> b
<__main__.Example instance at 0x101c89ea8>
>>> b.x
'foo'

但请注意,使用pickle模块的一个问题是处理实现版本.正如Python文档中所建议的,如果您希望一个unpickled实例自动处理实现版本控制,您可能需要添加一个版本实例属性并添加一个自定义__setstate__实现:https://docs.python.org/2/library/pickle.html#object.setstate.否则,序列化时对象的版本将完全准确无论对象本身的代码更改如何,您在反序列化时获得的内容.

点赞