python中__str__ 和 __repr__

在面向对象编程中,有这两个方法比较特殊, 当打印该对象的时候, 则会掉用__str__() 方法,

__repr__() 方法类似 稍有区别. 看下面代码
class Me(object):

    def __init__(self, name, hobby):
        self.name = name
        self.hobby = hobby

    def __str__(self):
        return (' __str__(): '+self.name + '   ' + self.hobby)

    def  __repr__(self):
        return ('__repr__(): '+self.name + '   ' + self.hobby)


me = Me('frank', 'swiming')
print(me)

结果如下:

__str__(): frank   swiming

Process finished with exit code 0

当打印 me 的时候 , 默认会调用__str__() 方法, 所以就有上面的打印. 其主要区别 如下

__repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员。

主要是 如果在控制台中  直接输入 me 则调用 __repr__ 方法, 看下图


注意事项:

注意 这里 需要用 return 一定要返回一个str 类型 , 否则 会报错

Traceback (most recent call last):
__repr__(): frank swiming
File "<input>", line 1, in <module>
TypeError: __repr__ returned non-string (type NoneType)

即实现这两个特殊方法的时候一定return  一个 str 类型的变量. 不能print 否则就会包上面的错误.


分享快乐,留住感动.     2018-02-19 20:42:59    --frank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值