鼓励您创建repr
允许您通过粘贴输出来创建新对象的对象repr
,但这不是严格执行的。根据对象的性质和任何内部结构,这也可能不是一件容易做到的事情。
有很多方法可以做到这一点。这是一种方法的非常简单的示例:
class ReprObject(object):
def __init__(self, value, item):
self.value = value
self.item = item
def __repr__(self):
return '%s(**%r)' % (self.__class__.__name__, self.__dict__)
然后我们把它带到交互式解释器并创建一个实例:
>>> r = ReprObject(value=1, item=True)
>>> r
ReprObject(**{'item': True, 'value': 1})
现在复制/粘贴它repr
并使用它来创建一个新对象:
>>> r2 = ReprObject(**{'item': True, 'value': 1})
>>> r2
ReprObject(**{'item': True, 'value': 1})
并且eval()
也可以工作:
>>> eval(repr(r2))
ReprObject(**{'item': True, 'value': 1})