Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 允许eval()解析类实例的repr()_Python_Serialization_Eval - Fatal编程技术网

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

Python 允许eval()解析类实例的repr(),python,serialization,eval,Python,Serialization,Eval,假设我自己定义了一个类,并为它定义了一个_repr________)方法。我想把它转换回我的对象。我知道使用json模块进行对象序列化可能是一种很好的方法,但是我是否可以使用内置的eval函数来实现这一点 编写你的_repr__;,这样它就可以创建一个有效的Python表达式来实例化你的对象 class MyClass(object): def __init__(self, a, b): self.a = a self.b = b def __re

假设我自己定义了一个类,并为它定义了一个_repr________)方法。我想把它转换回我的对象。我知道使用json模块进行对象序列化可能是一种很好的方法,但是我是否可以使用内置的eval函数来实现这一点

编写你的_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获得的任何值。

编写您的uu repr_u,这样它就可以创建一个有效的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获得的任何值即可。

如果您尝试此操作,您将收到一个错误,提示NameError:name'instance'未定义该代码中没有任何名为instance的内容,因此该错误不是从该代码中产生的。@kindall:他可能使用的是旧样式的类。如果您尝试此操作,你会得到一个错误,说NameError:name'instance'没有定义该代码中没有任何名为instance的东西,所以这不是错误的来源。@kindall:他可能使用了一个老式类。我很抱歉这里有歧义,我的意思是我想让我的对象在这里可以求值。我很抱歉这里有歧义,我的意思是我想让我的目标在这里可以评估。