前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 魔法方法之 __str__ 和 __repr__

Python 魔法方法之 __str__ 和 __repr__

作者头像
周辰晨
发布2020-03-31 12:10:49
4620
发布2020-03-31 12:10:49
举报

前言

在Pyhton 中,如果想定制化打印出实例对象的信息,那可以使用__str____repr__魔法方法来定制化显示。

__str____repr__

在Python中,打印一个自定义类的实例对象所显示的信息往往是很不友好的,如下所示:

代码语言:javascript
复制
>>> class Animal():
...     def __init__(self,name):
...             self.name = name
...
>>> dog  = Animal('monkey')
>>> print(dog)
<__main__.Animal instance at 0x0000000003664F88>

__str____repr__ 所起的作用就是定制化显示输出信息(你想输出什么就是什么),当然,两者也有区别的,区别如下:

•对于printstr内置函数,程序会首先尝试__str__,如果没有__str__,则尝试__repr__,如果没有__repr__,则选用默认显示。•在交互式回应,repr函数中__repr__会被调用,你可以这么认为,__str__ 是给用户看的,__repr__则是给开发者看的. 看下面示例:

代码语言:javascript
复制
>>> class Animal():
...     def __init__(self,name):
...             self.name = name
...     def __str__(self):
...             return "i am %s" % self.name
...     def __repr__(self):
...             return "Animal:name is %s" % self.name
...
>>> dog = Animal('kitty')
>>> dog
Animal:name is kitty
>>> print(dog)
i am kitty
>>> str(dog)
'i am kitty'
>>> repr(dog)
'Animal:name is kitty'

从上面示例可以看出 printstr函数中调用的是 __str__, 而在交互式响应中 和 repr函数中调用的是__repr__。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师影响力 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • __str__和__repr__
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档