Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # __repr__ vs __str__
- 这两个方法都可以用来定制object的输出,下面我们将通过几个例子来看两者的区别
- ```python
- class N1:
- def __init__(self, data):
- self.data = data
- def __str__(self):
- return 'N1: data=%s' % self.data
- class N2:
- def __init__(self, data):
- self.data = data
- def __str__(self):
- return 'N2: data=%s' % self.data
- class N3:
- def __init__(self, data):
- self.data = data
- def __repr__(self):
- return 'N3 repr: data=%s' % self.data
- def __str__(self):
- return 'N3 str: data=%s' % self.data
- # ---------- output
- '''
- In [29]: n1 = N1(1)
- In [30]: n1
- Out[30]: <BinaryTree.N1 at 0x10853fd30>
- In [31]: print(n1)
- N1: data=1
- In [32]: n2 = N2(2)
- In [33]: n2
- Out[33]: N2: data=2
- In [34]: print(n2)
- N2: data=2
- In [35]: n3 = N3(3)
- In [36]: n3
- Out[36]: N3 repr: data=3
- In [37]: print(n3)
- N3 str: data=3
- '''
- ```
- 1. 重写 __repr__, print 和直接调用,输出都改变
- 2. 重写 __str__, print 输出定制化信息,直接调用出内存地址
- 3. 两者同时存在的时候print输出str定制信息,直接调用输出 repr 信息,换句话说 print 的时候 repr 被 str 覆盖了
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement