__repr__和__str__的区别

__repr__和__str__都是python中的特殊方法,都是用来输出实例对象的,如果没有定义这两个方法在打印的时候只会输出实例所在的内存地址,如图:

这种方式的输出没有可读性,并不能直观的体现实例。
python提供了__repr__和__str__这两种方法来改进,如下:


在第二个例子中第一次直接输出实例并没有返回str,只改变了print的输出,由此可见__repr__改变的是所有的输出,而__str__改变的是print输出,所以当我们没有重构__str__只重构了__repr__同样是可以使用print来输出的

这个例子里面同时包含了repr和str,print还是默认调用str,实例是调用repr

借用他人的一句话__repr__是: 适用于开发人员,__str__适用于客户。另外__repr__是明确无误的  __str__ 是可读的但是不一定准确。

posted @ 2018-08-16 10:35  fanmleii  阅读(332)  评论(0编辑  收藏  举报