发布于2020-04-09 19:27 阅读(1763) 评论(0) 点赞(0) 收藏(2)
python的魔法方法类似于C++中的重载,在python中采用双下划线包围函数名的方法来实现对已有函数的重写,实现开发者想要的功能。python的魔法方法很多,这里直接可以参考https://fishc.com.cn/thread-48793-1-2.html总结的非常全面,这里不一一介绍。这篇博客主要是记录我学习过程遇到的问题,在这里总结一下__str__
和__repr__
两者的区别和联系。
问题的由来
直接上一个例子,由下图可以看到,当我们想打印一个类时,只能看到类名+object at+地址
的形式,当我们想查看类的属性时,当然也可以使用print(my_pool.length,my_pool.width)
的形式来实现,但是在python中有更好的方法来实现,即采用魔法方法__str__
和__repr__
__str__
方法
我们在上面类的基础上添加一个__str__
方法,可以看到,当重新打印类时,就是开发者想要的输出结果,当然,如果想要将类转换成字符串时,也可以直接调用str()
来实现,同样format()
也适用。
__repr__
方法
要想实现上面的功能,同样也可以使重写repr方法,在之前基础上,添加了一些调用信息可以更好的知道在使用那些语句时调用的什么方法。
__str__
和__repr__
的区别
通过上面的例子其实可以初步看出这两者的功能都是用来实现类到字符串的转换,但是两者还是存在区别,下面再用一个例子来说明其区别
从上述结果可以看出:
__str__
的返回结果可读性强,也就是便于读者理解
__repr__
的返回结果更加准确,便于开发者调试
总结
__str__
和 __repr__
方法定义类到字符串的转化方式,而不需要手动打印某些属性或是添加额外的方法。__str__
的返回结果在于强可读性,而 __repr__
的返回结果在于准确性。__repr__
方法来保证类到字符串的自定义转化的有效性,__repr__
是可选的。因为默认情况下,在需要却找不到 __str__
方法的时候,会自动调用 __repr__
方法。参考链接:https://baijiahao.baidu.com/s?id=1596817611604972751&wfr=spider&for=pc
作者:飞龙出海
链接:https://www.pythonheidong.com/blog/article/319591/c8a0c86f33fbcbb710df/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!