Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. # __repr__ vs __str__
  2.  
  3. 这两个方法都可以用来定制object的输出,下面我们将通过几个例子来看两者的区别
  4.  
  5. ```python
  6. class N1:
  7. def __init__(self, data):
  8. self.data = data
  9.  
  10. def __str__(self):
  11. return 'N1: data=%s' % self.data
  12.  
  13. class N2:
  14. def __init__(self, data):
  15. self.data = data
  16.  
  17. def __str__(self):
  18. return 'N2: data=%s' % self.data
  19.  
  20. class N3:
  21. def __init__(self, data):
  22. self.data = data
  23.  
  24. def __repr__(self):
  25. return 'N3 repr: data=%s' % self.data
  26.  
  27. def __str__(self):
  28. return 'N3 str: data=%s' % self.data
  29.  
  30. # ---------- output
  31. '''
  32. In [29]: n1 = N1(1)
  33.  
  34. In [30]: n1
  35. Out[30]: <BinaryTree.N1 at 0x10853fd30>
  36.  
  37. In [31]: print(n1)
  38. N1: data=1
  39.  
  40. In [32]: n2 = N2(2)
  41.  
  42. In [33]: n2
  43. Out[33]: N2: data=2
  44.  
  45. In [34]: print(n2)
  46. N2: data=2
  47.  
  48. In [35]: n3 = N3(3)
  49.  
  50. In [36]: n3
  51. Out[36]: N3 repr: data=3
  52.  
  53. In [37]: print(n3)
  54. N3 str: data=3
  55. '''
  56. ```
  57.  
  58. 1. 重写 __repr__, print 和直接调用,输出都改变
  59. 2. 重写 __str__, print 输出定制化信息,直接调用出内存地址
  60. 3. 两者同时存在的时候print输出str定制信息,直接调用输出 repr 信息,换句话说 print 的时候 repr 被 str 覆盖了
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement