Python中{!r}格式符的作用及在__repr__方法内的使用疑问
Python
{!r} 格式符用法说明 {!r} 是Python str.format() 语法体系下的转换标志,作用是调用传入值的__repr__()内置方法,将该方法的返回值作为内容插入到字符串的对应位置。
你给出的示例代码:
def __repr__(self): return "{!r}".format(self.__dict__)
在这里不会出现循环调用问题:{!r} 触发的是self.__dict__(字典类型实例)自身的__repr__方法,而非当前类的__repr__方法,这段代码的效果等价于直接返回repr(self.__dict__)。
{!r} 和另外两个常见的转换标志区别如下:
!s:调用传入值的__str__()方法,返回适合人类阅读的字符串表示,和直接写{}无转换标志的默认行为一致!r:调用传入值的__repr__()方法,返回官方标准的、可被解析器识别的对象表示,通常输出会附带类型特征标记,比如字符串会自带引号!a:调用传入值的ascii()方法,返回ASCII编码的对象表示,非ASCII字符会转义为\u、\x等格式
你可以在Python官方文档的「字符串格式化」「格式规格迷你语言」相关章节查到全部的转换标志说明。
内容的提问来源于stack exchange,提问作者WhiteRau
相关产品推荐
相关产品推荐

