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)
相关文章
相关标签/搜索