程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

通俗易懂的python魔法方法

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)