__repr__ 方法的作用

  Python 有一个内置的函数叫 repr,它能把一个对象用字符串的形式表达出来以便辨认,这就是“字符串表示形式”。repr 就是通过 repr 这个特殊方法来得到一个对象的字符串表示形式的。如果没有实现 repr,当我们在控制台里打印一个向量的实例时,得到的字符串可能会是 <Vector object at 0x10e100070>

 交互式控制台和调试程序(debugger)用 repr 函数来获取字符串表示形式;在老的使用% 符号的字符串格式中,这个函数返回的结果用来代替 %r 所代表的对象;同样,str.format 函数所用到的新式字符串格式化语法(https://docs.python.org/2/library/string.html#format-string-syntax)也是利用了 repr,才把!r 字段变成字符串。

reprstr 的区别在于,后者是在 str() 函数被使用,或是在用 print 函数打印一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好。如果你只想实现这两个特殊方法中的一个,repr 是更好的选择,因为如果一个对象没有 str 函数,而 Python 又需要调用它的时候,解释器会用 repr 作为替代。

“Difference between str and __repr__Python”(http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-inpython)是 Stack Overflow 上的一个问题,Python 程序员 Alex Martelli 和 MartijnPieters 的回答很精彩。

下面是个简单的例子:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Test():
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return  '这个类的名字是: % s' % self.name

Test('科学')

这是两种运行方式的结果:

在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CSDN_Mr_H/article/details/90414524
今日推荐