python的str和repr函數

先來看一段代碼python

class Foo():
	"""docstring for Foo"""
	def __init__(self, name):
		self.name = name

f = Foo("xiaohong")
print(f)

l = list("hello")	
print(l)

執行結果爲:函數

<__main__.Foo object at 0x0000023F0A05B400>
['h', 'e', 'l', 'l', 'o']

python中一切皆對象,f是Foo類的實例,l是List類的實例,可是print出來的東西卻徹底不同,緣由就是print函數觸發的是產生實例的類的str方法,若該類沒有str方法就找repr方法,若repr方法也沒有就會返回像第一行這樣的東西,咱們都知道str調用的是類的__str__()方法,repr調用的是類的__repr__()方法,因此咱們知道應該怎麼修改Foo類了,那就加一個__str__()吧,spa

class Foo():
	"""docstring for Foo"""
	def __init__(self, name):
		self.name = name

	def __str__(self):
		return self.name

f = Foo("xiaohong")
print(f)

執行結果爲:code

xiaohong

總結一下,想要print你的類,就添加__str__()方法或者__repr__()方法,須要注意的是無論是__str__()仍是__repr__(),它們的返回值必須是字符串類型,否則會報以下的錯誤:對象

TypeError: __str__ returned non-string (type int)
相關文章
相關標籤/搜索