__str__和__repr__的区别

>>> class Hello():
	def __init__(self,sayhello = 'Hello Python!!'):
		self.word = sayhello

		
>>> T = Hello()
>>> T
<__main__.Hello object at 0x000001399B1575F8>
>>> print(T)
<__main__.Hello object at 0x000001399B1575F8> #无论是用print打印还是直接输出对象T,显示的都是        
                                              #  对象的内存地址
>>> class HelloRepr(Hello):
	def __repr__(self):
		return self.word

	
>>> tr = HelloRepr()
>>> tr       
Hello Python!!
>>> print(tr)             #重新定义__repr__之后,无论直接输出对象还是用print打印对象,都可以 
                          #直接显示对象内容            
Hello Python!!
>>> class HelloStr(Hello):
	def __str__(self):
		return self.word

	
>>> ts = HelloStr()
>>> ts
<__main__.HelloStr object at 0x000001399B157908>
>>> print(ts)
Hello Python!!        #重新定义__str__之后,用print打印对象可以输出正确内容,直接输出对象依 
                        #然只会显示对象的内存地址

猜你喜欢

转载自blog.csdn.net/dxcve/article/details/81070586