python __str__() 和 __repr__()是干啥的
2024-10-11 03:59:20
1. 没定义__str__() print的时候得不到自己想要的东西
类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可)。虽说这总比没有好,但确实是没什么用处啊。
所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息
2.使用 __str__ 实现类到字符串的转化
3.另一个就是 __repr__ 方法。后者的工作方式与前者类似,但是它被调用的时机不同
另外,列表以及字典等容器总是会使用 __repr__ 方法。即使你显式的调用 str 方法,也是如此。
如果我们需要显示的指定以何种方式进行类到字符串的转化,我们可以使用内置的 str() 或 repr() 方法,它们会调用类中对应的双下划线方法。
4.__str__ 和 __repr__ 的差别是什么
__str__ 和 __repr__ 的差别究竟在哪里,它们的功能都是实现类到字符串的转化,它们的特定并没有体现出用途上的差异。
因此,我们有个初步的答案。
__str__ 的返回结果可读性强。也就是说,__str__ 的意义是得到便于人们阅读的信息,就像上面的 '2018-04-03' 一样。
__repr__ 的返回结果应更准确。怎么说,__repr__ 存在的目的在于调试,便于开发者使用。细心的读者会发现将 __repr__ 返回的方式直接复制到命令行上,是可以直接执行的。
上面应该就是这两个方法的意义所在吧
5.自己写class的时候要加__repr__
如果你没有添加 __str__ 方法,Python 在需要该方法但找不到的时候,它会去调用 __repr__ 方法。因此,我推荐在写自己的类的时候至少添加一个 __repr__ 方法,这能保证类到字符串始终有一个有效的自定义转换方式。
参考:http://baijiahao.baidu.com/s?id=1596817611604972751&wfr=spider&for=pc
最新文章
- Object-c 类方法和实例方法的区别和联系
- 解决java代码测试http协议505错误
- Window10可用的转串口驱动CH340
- 2、C语言关键字-auto register static
- 《UML大战需求分析》阅读笔记5
- python成长之路【第五篇】:python字符编码
- sqlserver -- 学习笔记(三)解决php连接sqlserver2005视图时显示“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项”的问题
- 夺命雷公狗jquery---1选择元素的3种方法
- VMware VMware各版本
- C# 获取打印机状态
- 使用air进行移动app开发常见功能和问题(二)
- sql优化-hint的作用
- nignx开启expires后相关资源不显示的问题
- 【转】FTP主动模式和被动模式的比较
- linux下查看Memcached运行状态
- 80端口被NT kernel &; System 占用
- future builder
- 休眠(1):sleep和wait的区别
- promise用法十道题
- 时间序列分解算法:STL