先来看一段代码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)