湖南住房和城乡建设部网站,汕头网页,一键搭建云免流服务器,视频网站的做Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些发布时间#xff1a;2020-11-05 17:11:48来源#xff1a;亿速云阅读#xff1a;95作者#xff1a;Leah本篇文章给大家分享的是有关Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些#xff0c;小编觉得挺实用的…Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些发布时间2020-11-05 17:11:48来源亿速云阅读95作者Leah本篇文章给大家分享的是有关Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些小编觉得挺实用的因此分享给大家学习希望大家阅读完这篇文章后可以有所收获话不多说跟着小编一起来看看吧。阅读到 Strings 中关于转换对象为字符串的内容介绍了 repr 函数趁着还没有真正了解 Python 面向对象的生疏与热度感性上理解一下 repr 与 str 这两个函数的区别。Python 的全局方法 repr 和 str 会映射到对象的 __repr__ 和 __str__ 的方法调用还有 str(obj) 时会调用哪个方法以及 print(obj) 和调试 Python 代码时的对象显示会调用哪个方法呢这就是本文想要印证的内容。恰如 Java 的 System.out.println(obj) 或hello obj都会调用 Java 对象的 toString()方法那么 Python 中是怎么一回事呢来自某本 Python 入门书的解释repr和 str:repr: formal string representation of a Python objectstr: informal string representation of a Python object或者说 printable string representation首先repr是 representation 的意思一个是正式另一个是非正式看起来 repr 比 str 显得重要些。对于内置的 Python 对象我们可以用 repr, print, 和 str 函数如针对 list 类型 repr([1,2])[1, 2] print([1,2])[1, 2] str([1,2])[1, 2]但是具体上面三个函数中分别调用了 list 的什么方法就不可而知了这时候定义一个自己的类最能说明问题。测试环境为 IntelliJ, 以调试截图来说明分别为 __str__和__repr__几种组合情况只定义了 __str__ 方法说明在只定义了 __str__方法的情况下调试时 IntelliJ 在行内显示对象为__str__的输出但变量窗口中显示的是默认的__repr__的输出repr始终坚持调用默认的__repr__方法str 转型函数调用了 __str__方法print调用了 __str__方法只定义了 __repr__ 方法说明在只定义了 __repr__方法的情况下可以看出 __repr__方法极其强势它垄断了一切的调用repr, str, 和 print函数甚至是 IntelliJ 的调试显示都必须以 __repr__方法为核心。以上所有的情况都是调用 __repr__ 方法没得选择同时定义了 __repr__ 和 __str__ 方法说明在同时定义了 __repr__和 __str__方法的情况下__str__方法反而能扳回来。除了明确的 repr 会调用 __repr__方法和调试时变量窗口中显示对象会调用 __repr__方法外其他时候都是 __str__ 占优。具体为repr 和 IntelliJ 调试时变量窗口显示变量调用 __repr__ 方法IntelliJ 调试时行内显示变量调用了 __str__ 方法str 转型操作调用了对象的 __str__ 方法这不能解释为 informal 非正式的print 调用了 __str__ 来获得对象输出字符串另外格式化字符串时的调用的对象方法与 print时是一样的例如下面的格式化代码f1 %s % tf2 {}.format(t)Python 不知道像 Java 那样由字符串加上一个对象this is t #Java 中会展开为 this is t.toString()Python 会报以下错误TypeError: can only concatenate str (not Test) to str说这里的 号只能连接两个字符串除非定义了 __add__和 __radd__方法对应关系分别为t Test()z1 hello t #相当于 t.__radd__(hello)z2 t hello #相当于 t.__add__(hello)Python 的 __xyz__也挺魔幻的。以上就是Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。