
In [1]: class Ctest(object): ...: pass ...: In [2]: var = Ctest() In [3]: var Out[3]: <__main__.Ctest at 0x1619950> In [4]: print var <__main__.Ctest object at 0x1619950>
当仅仅定义__repr__时:
In [1]: class Ctest(object):
...: def __repr__(self):
...: return "Hi,I\‘m repr"
...:
In [2]: var = Ctest()
In [3]: var
Out[3]: Hi,I\‘m repr
In [4]: print var
Hi,I\‘m repr
当仅仅定义__str__时:
In [5]: class Ctest(object):
...: def __str__(self):
...: return "Hi,I\‘m str"
...:
In [6]: var = Ctest()
In [7]: var
Out[7]: <__main__.Ctest at 0x2938510>
In [8]: print var
Hi,I\‘m str
当2个都定义时:
In [12]: class Ctest(object):
def __str__(self):
return "Hi,I\‘m str"
def __repr__(self):
return "Hi,I\‘m repr"
....:
In [13]: var = Ctest()
In [14]: var
Out[14]: Hi,I\‘m repr
In [15]: print var
Hi,I\‘m str
In [1]: Andy = [1,2,3] In [2]: Bill = Andy In [3]: Andy == Bill Out[3]: True In [4]: Andy is Bill Out[4]: True
In [5]: Andy = [1,2,3] In [6]: Bill = [1,2,3] In [7]: Andy == Bill Out[7]: True In [8]: Andy is Bill Out[8]: False
Python是朵两生花 (__str__ __repe__ is) 讲的很清楚
原文:http://www.cnblogs.com/stevenzeng/p/5154954.html