您的位置:首页 > 编程语言 > Python开发

python中__str__ 和 __repr__

2018-02-19 20:44 399 查看
在面向对象编程中,有这两个方法比较特殊, 当打印该对象的时候, 则会掉用__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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: