当您在REPL中以这种方式检查对象时,它将调用该对象的
__repr__方法。相比之下,
__str__方法。例:
>>> class Widget:... def __repr__(self):... return "repr of a Widget"... def __str__(self):... return "str of a Widget"...>>> x = Widget()>>> xrepr of a Widget>>> print(x)str of a Widget>>> print([x,2,3])[repr of a Widget, 2, 3]>>> print(repr(x))repr of a Widget>>> print(str(x))str of a Widget
当定义
__repr__并
__str__为自己的班,尽量遵循关于哪一个应该更详细,“官方”的文件的建议。
[
__repr__计算]对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(在适当的环境下)。
…[
__str__计算]对象的“非正式”字符串表示形式。返回值必须是一个字符串对象。此方法的不同之处在于,object.__repr__()不期望__str__()返回有效的Python表达式:可以使用更方便或更简洁的表示形式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)