Python 何时调用_repr__;()?
Python 何时调用_repr__;()?,python,Python,print OBJECT调用OBJECT.\uuu str\uuu(),那么何时调用OBJECT.\uuuu repr\uu()?我看到,print OBJECT调用OBJECT.\uuuu repr\uuuu()当OBJECT.\uu str\uuu()不存在时,但我希望这不是调用\uu repr\uu()的唯一方法 召唤 \uuuu repr\uuuuu的目的是提供对象的“形式”表示,该表示应该是一个表达式,可以评估以创建对象。就是 obj == eval(repr(obj)) 应该但并不
print OBJECT
调用OBJECT.\uuu str\uuu()
,那么何时调用OBJECT.\uuuu repr\uu()
?我看到,print OBJECT
调用OBJECT.\uuuu repr\uuuu()
当OBJECT.\uu str\uuu()
不存在时,但我希望这不是调用\uu repr\uu()的唯一方法
召唤
\uuuu repr\uuuuu
的目的是提供对象的“形式”表示,该表示应该是一个表达式,可以评估
以创建对象。就是
obj == eval(repr(obj))
应该但并不总是在实践中产生True
我在评论中被问到一个whenobj!=eval(repr(obj))
这里还有一个:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
con=sqlite3.connect(“:内存:”)
>>>报告员(con)
''
>>>
repr(obj)
调用obj.\uuu repr\uu
repr(obj)
这是为了清楚地描述对象,特别是为了调试目的 在Python2.x中,
`obj`
最终将调用obj.\uuu repr\uuu()
。它是repr()
的简写,不仅在使用repr()
时会调用\uuuu repr()
,而且在以下情况下也会调用它:
obj
,然后按enter键打印[u'test']
不打印['test']
为什么obj==eval(repr(obj))不总是为真?您能举个例子吗?对于一个复杂的对象,例如一个文件,它不一定会返回True。@inspectorG4dget:obj==eval(type('myclass',(),{})),非常感谢@AaronMcSmooth,@Avi,@MikeAxiak对此的解释。++到all@S.Lott谢谢你指出我的标记错误,现在已经修复了。我只是不知道你指的是什么指导方针。谢谢你!
class BrokenRepr(object):
def __repr__(self):
return "not likely"
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>