首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中函数 __str__ __repr__ 的区别

简而言之: __str__ 的目标在于可读性(对用户更友好) __repr__ 的目标在于无歧义(更有助于调试) 举个栗子(Difference between str and repr?)...2020-03-28 11:06:49.580643' >>> repr(today) 'datetime.datetime(2020, 3, 28, 11, 6, 49, 580643)' 注:str()repr...()函数分别调用的是 __str__ __repr__ 从上面不难看出, __str__ 强调对于用户的可读性,而 __repr__则倾向于描述对象本身。...另外在《流畅的Python》一书中提到如果这两个方法只实现一个的话,那么 __repr__ 会是更好的选择。因为如果一个对象没有 __str__ 函数,解释器会用 __repr__代替,反之则不成立。...Sic(object): def __str__(object): return 'foo' print str(Sic()) print repr(Sic()) 输出: foo foo

27030
您找到你想要的搜索结果了吗?
是的
没有找到

Python 魔法方法之 __str__ __repr__

前言 在Pyhton 中,如果想定制化打印出实例对象的信息,那可以使用__str____repr__魔法方法来定制化显示。...__str____repr__ 在Python中,打印一个自定义类的实例对象所显示的信息往往是很不友好的,如下所示: >>> class Animal(): ......____repr__ 所起的作用就是定制化显示输出信息(你想输出什么就是什么),当然,两者也有区别的,区别如下: •对于printstr内置函数,程序会首先尝试__str__,如果没有__str__...•在交互式回应,repr函数中__repr__会被调用,你可以这么认为,__str__ 是给用户看的,__repr__则是给开发者看的....str函数中调用的是 __str__, 而在交互式响应中 repr函数中调用的是__repr__

48330

python笔记70 - Python中__repr____str__区别

前言 Python中__repr____str__使用区别 __repr__ 使用 很多时候我们在创建一个类的时候,在终端打印类的实例,看到的是一个类似于这样的内容:<XXX object at 0x0000000001222E10...__str__ 使用 __str__方法是在print()打印的时候输出给用户看的,面向的是普通的用户,方便用户知道返回的是什么实例对象。...object at 0x000,只有print()输出的时候才会打印__str__返回的内容 总结 注意:__str__()方法__repr__()方法的返回只能是字符串!...__repr____str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向开发者 关于调用两种方法的时机 使用print()时 使用%sf’{}’拼接对象时 使用str...当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str__只是覆盖了__repr__以得到更友好的用户显示。

35840

一文让你彻底搞懂`__str__``__repr__`?

__repr__ 接下来我们看一看__str____repr__有哪些异同。...根据Python官方文档定义: __str__:通过str(object)以及内置函数format()print()调用以生成一个对象的“非正式”或格式良好的字符串表示。返回必须是字符串对象。...__repr__:是由repr()内置函数调用,用来输出一个对象的“官方”字符串表示。返回必须是字符串对象,此方法通常被用于调试。内置类型 object 所定义的默认实现会调用 object....__ 的目标是可读的,__str__()并不预期返回一个有效的 Python 表达式,但可以使用更方便或更准确的描述信息。...容器的 __str__ 方法的使用包含对象的 __repr__ 参考资料: “Difference between __str__ and __repr__ in Python” Fluent Python

1.5K30

Python面试题之Python中__repr____str__区别

# 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了 __repr____str__这两个方法都是用于显示的,__str__是面向用户的...打印操作会首先尝试__str__str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。...__repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用printstr。...它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示。...当我们想所有环境下都统一显示的话,可以重构__repr__方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str

42420

Python 函数为什么会默认返回 None

return 语句,但是在函数调用后,都能取到一个返回。...它们的执行效果跟直接写 return 语句相比,是完全相同的: 这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏的 return 返回;一种写了 return,而且实际也有返回。...不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回,它就会主动地加上一个 Py_None 返回(出自:compile.c): 也就是说,如果定义的函数没有返回...那么,这就会引出新的问题:Python 为什么要求函数都要有返回呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回的空函数呢?

2.2K40

【Python】函数 ④ ( 函数 None 返回 | None 应用场景 | 用于 if 判断 | 定义无初始内容变量 | 代码示例 )

一、函数 None 返回 1、空返回 在 Python 函数中 , return 返回是可选的 , 函数可以没有返回 ; def 函数名(函数参数): """函数文档字符串(可选)"""...- 接收 None 返回 下面的代码中 , hello 函数没有使用 return 关键字 返回 返回 ; 该 hello 函数 没有显示定义 返回 , 实际上该函数返回的是 None 返回...; 使用变量接收该函数的返回 , 返回None , 返回类型是 NoneType ; 代码示例 : """ 接收 函数 None 返回示例 """ # 定义无返回的函数 def hello...return 关键字返回 None 在该示例中 , 比上一个示例多了 return None 返回 , 其执行效果与没有返回一模一样 ; 代码示例 : """ 接收 函数 None 返回示例 ""...None 二、None 应用场景 ---- 1、None 应用场景简介 函数 None 返回应用场景 : 函数返回 : 表示函数没有返回 ; 用于 if

35620

python递归调用中的坑:打印有, 返回None

今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有, 返回None问题。...输出结果让我百思不得其解, 为什么明明上一步输出有, return出去后就变成了None??...return right_shift(s, n) s = right_shift(s1, 4) print(s) # 成功输出 "efgabcd" 知识点补充:python 递归返回None 解决 今天写了一个递归...return 之前答应出来都是有的, 调用时候返回都是None ,很是纳闷 后来找到原因 现在来看下返回None 的代码 def get_end_parent_ele(self, obj):...None 总结 到此这篇关于python递归调用中的坑:打印有, 返回None的文章就介绍到这了,更多相关python递归打印有返回none内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

2.4K31

测开《单例模式实现的思路、__str__方法》

目录 一、单例模式实现的思路 1.实现的思路 2.代码 3.通过单例模式可以做到什么 二、__str__方法__repr__方法 三、__str__方法 一、单例模式实现的思路 1.实现的思路 图片来自网络...创建过了,就把它对应的改掉,下次再进来判断的时候,这个条件就不会成立了。 下次就不创建了,就把第一次创建的对象返回出去。第一次创建的对象,找个变量给它接收一下就行了。...二、__str__方法__repr__方法 交互环境下print打印的内容直接输入变量,返回的内容不一样。 为什么呢? 图片来自网络 __str__方法__repr__方法这两个方法。...三、__str__方法 「注意:」 重写__str__方法__repr__方法的时候,必须一定要写return。...重写__str__方法__repr__方法的时候,return返回的必须是一个字符串对象。 1.函数没有return,不写return,默认返回的是个None

39840

python3--面向对象进阶之内置方法

__str____repr__ 改变对象的字符串显示__str__, __repr__ 示例 class List:     def __init__(self, *args):         self.l...(b)  # 相当于 str(b)的返回 print(repr(a))  # 函数 打印repr的返回 print(repr(b))  # 函数 打印repr的返回 print(a.... i in self.l])) l = List(1,2,3,4,5)  #注释掉上面的__str__方法,__repr__方法 print(str(l)) print(repr(l)) 执行结果...__str____repr__加上__format__的例子 改变对象的字符串显示__str__, __repr__,自定制格式化字符串__format__ format_dict = {     '...__repr__() 如果__str__没有被定义,那么就会使用__repr__来代替输出 注意:这两方法的返回必须是字符串,否则抛出异常 """ print('from repr:', repr(s1

47510

python 魔术方法(三)对象的打印 -- __repr__ 与 __str__

python 魔术方法(二) 对象的创建与单例模式的实现 但有另外两个常用的魔术方法也一样困扰着很多 Python 程序员,那就是本文将介绍的用于对象字符串化的两个方法 — __repr__ __str...__ 你一定会疑惑,为什么 Python 与其他很多编程语言有如此不同 — 对象的字符串输出方法为什么会有两个?...logging 打印日志的目的一致,此时调用的是 __str__ 方法 容器的 __str__ 方法调用的是每一个成员的 __repr__ 方法 3....例如下面定义的 IP 类,__repr__ 方法用于在 log 等场景中打印类内成员的详情,而 __str__ 则用于将 IP 转化为点分十进制方式用于友好的输出。...__ 方法,这种问题是需要格外注意避免的。

40720
领券