允许我的类的实例的repr()被eval()解析

时间:2013-02-01 23:11:01

标签: python serialization eval

假设我自己定义了一个类,并为其定义了__repr__方法。我想将它转换回我的对象​​。我知道对象序列化可能是一种很好的方法(使用json模块),但无论如何我可以使用内置的eval函数来实现这一点吗?

1 个答案:

答案 0 :(得分:4)

编写__repr__(),以便创建一个有效的Python表达式来实例化对象。

class MyClass(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __repr__(self):
        return "%s(%r, %r)" % (type(self).__name__, self.a, self.b)

显然,这依赖于您使用的值,并且具有合理的repr()

您无需定义任何特殊eval() - 只需传递repr()中的任何内容。