Python之__str__与__repr__
2017-05-03 00:00
281 查看
我们在设计一个类时,如果只实现__str__会如何?
这显然不是我们需要的
只能这样用,如果增加实现__repr__会如何?
达到我们的预期,那如果只实现__repr__,不实现__str__又会如何 ?
如此看来,在类中一般情况下,只实现__repr__
>>> class Person: def __init__(self,name,age): self.name=name self.age=age def __str__(self): return '姓名:%s 年龄:%d' %(self.name,self.age) >>> people=[Person('范冰冰',37),Person('柳岩',36),Person('王菲',47)] >>> people [<__main__.Person object at 0x0000021BB6451B38>, <__main__.Person object at 0x0000021BB6451B00>, <__main__.Person object at 0x0000021BB63AAC18>]
这显然不是我们需要的
>>> [print(p) for p in people] 姓名:范冰冰 年龄:37 姓名:柳岩 年龄:36 姓名:王菲 年龄:47 [None, None, None] >>> for p in people: print(p) 姓名:范冰冰 年龄:37 姓名:柳岩 年龄:36 姓名:王菲 年龄:47
只能这样用,如果增加实现__repr__会如何?
>>> class Person: def __init__(self,name,age): self.name=name self.age=age def __str__(self): return '姓名:%s 年龄:%d' %(self.name,self.age) def __repr__(self): return self.__str__() >>> people=[Person('范冰冰',37),Person('柳岩',36),Person('王菲',47)] >>> people [姓名:范冰冰 年龄:37, 姓名:柳岩 年龄:36, 姓名:王菲 年龄:47] >>> [p for p in people] [姓名:范冰冰 年龄:37, 姓名:柳岩 年龄:36, 姓名:王菲 年龄:47]
达到我们的预期,那如果只实现__repr__,不实现__str__又会如何 ?
>>> class Person: def __init__(self,name,age): self.name=name self.age=age def __repr__(self): return '姓名:%s 年龄:%d' %(self.name,self.age) >>> p1=Person('范冰冰',37) >>> p1 姓名:范冰冰 年龄:37 >>> people=[Person('范冰冰',37),Person('柳岩',36),Person('王菲',47)] >>> people [姓名:范冰冰 年龄:37, 姓名:柳岩 年龄:36, 姓名:王菲 年龄:47] >>> for p in people: print(p) 姓名:范冰冰 年龄:37 姓名:柳岩 年龄:36 姓名:王菲 年龄:47
如此看来,在类中一般情况下,只实现__repr__
相关文章推荐
- python中str()和repr()区别
- Python repr() 或str() 函数
- python中str和repr区别
- python中str()与repr()区别
- python中的repr与str
- python之repr()和str()的区别
- python __str__ , __repr__区别
- 【ZZ】python - __str__ 和 __repr__
- 【ZZ】python - __str__ 和 __repr__
- Python的repr和str有什么不同?
- Python的repr和str有什么不同?
- python str与repr的区别
- 关于python的str()和repr()函数
- python的str()和repr()的区别
- Python repr() str() print %r
- python str与repr的区别
- python-str()和 repr()
- Python repr() 或str() 函数
- str和repr区别 分类: python学习 2014-06-23 10:05 205人阅读 评论(0) 收藏
- Python的str()和repr()