繁体   English   中英

什么是在python中重建对象或重新创建对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM