Python学习:__repr__和__str__区别
Posted 南淮北安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习:__repr__和__str__区别相关的知识,希望对你有一定的参考价值。
文章目录
一、 __repr__
class Name:
def __init__(self,name):
self.name = name
上面打印类对象并不是很友好,显示的是对象的内存地址
此时我们重构 __repr__
class Name:
def __init__(self,name):
self.name = name
def __repr__(self):
return 'Name: %s' % self.name
重构__repr__
方法后,不管直接输出对象(面向开发者)还是通过print(面向用户)打印的信息都按我们__repr__
方法中定义的格式进行显示了
二、 __str__
此时我们尝试下重构__str__
class Name:
def __init__(self,name):
self.name = name
def __str__(self):
return 'Name: %s' % self.name
此时,直接输出对象(面向开发者)显示对象的内存地址,使用print输入对象显示的是友好提示
三、总结
如果要把一个类的实例变成 str,就需要实现特殊方法__str__()
__repr__
和__str__
这两个方法都是用于显示的,__str__
是面向用户的,而__repr__
面向开发者
想要直接输出对象(面向开发者)和使用 print 输入对象都显示的是友好提示除了重构__repr__
,还可以重构__str__
实现
class Name:
def __init__(self,name):
self.name = name
def __str__(self):
return 'Name: %s' % self.name
__repr__ = __str__
以上是关于Python学习:__repr__和__str__区别的主要内容,如果未能解决你的问题,请参考以下文章
python_魔法方法:__str__()和__repr__()