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

猜你喜欢

转载自blog.csdn.net/u010339879/article/details/79337975