Python 允许eval()解析类实例的repr()
假设我自己定义了一个类,并为它定义了一个_repr________)方法。我想把它转换回我的对象。我知道使用json模块进行对象序列化可能是一种很好的方法,但是我是否可以使用内置的eval函数来实现这一点 编写你的_repr__;,这样它就可以创建一个有效的Python表达式来实例化你的对象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
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:他可能使用了一个老式类。我很抱歉这里有歧义,我的意思是我想让我的对象在这里可以求值。我很抱歉这里有歧义,我的意思是我想让我的目标在这里可以评估。