在面向对象编程中,有这两个方法比较特殊, 当打印该对象的时候, 则会掉用__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