[英]what is means reconstruct object or recreate object in python?
我试图理解__str__
和__repr__
之间的__str__
以及以下python中__str__和__repr__之间的区别
在回答中说__repr__
的目标是明确的,我感到困惑,这实际上是什么意思。 另一个答案是: __repr__
:python对象的表示形式通常eval
会将其转换回该对象,因此我已经读过eval
函数,让它在其中执行python代码。
有人可以用简单的语言解释这些术语:
__repr__
? eval
和__repr__
什么关系? 也许一个简单的例子将有助于阐明:
class Object:
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return 'Object({0.a!r}, {0.b!r})'.format(self)
该对象具有在__init__
定义的两个参数和一个明智的__repr__
方法。
>>> o = Object(1, 2)
>>> repr(o)
'Object(1, 2)'
注意,对象的__repr__
现在看起来与我们创建对象的方式完全相同。 合法的Python代码提供了相同的值。 正如数据模型文档所述 :
如果可能的话,[
__repr__
]应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(在适当的环境下)。
那是eval
出现的地方:
>>> x = eval(repr(o))
>>> x.a
1
>>> x.b
2
因为表示形式是Python代码,所以我们可以对其进行eval
并获得具有相同值的对象。 这是“重构”原始对象o
。
但是,正如注释中所指出的那样,这仅是一个示例,并不意味着您在尝试创建x
的副本时应该依赖repr(eval(x))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.