__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('科学')

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

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

  • 31
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值