Python3基础-str与repr
__str__ 返回一个字符串,当做这个对象的描写
#没有__str__ class People: def __init__(self,name,age): self.name = name self.age = age p1 = People('susu',18) print(p1) """ 执行结果如下 <__main__.People object at 0x03900C10> """
#存在__str__ class People: def __init__(self,name,age): self.name = name self.age = age def __str__(self): """返回一个对象的描述信息""" return "名字是:%s , 年龄是:%d" % (self.name, self.age) p1 = People('susu',18) print(p1) """ 执行结果如下 名字是:susu , 年龄是:18 """
__repr__
class People: def __init__(self,name,age): self.name = name self.age = age def __repr__(self): """返回一个对象的描述信息""" return "名字是:%s , 年龄是:%d" % (self.name, self.age) p1 = People('susu',18) print(p1) """ 执行结果如下: 名字是:susu , 年龄是:18 """
__str__ 和__repr__共存的情况下
class People: def __init__(self,name,age): self.name = name self.age = age def __str__(self): """返回一个对象的描述信息""" return "__str__名字是:%s , 年龄是:%d" % (self.name, self.age) def __repr__(self): """返回一个对象的描述信息""" return "__repr__名字是:%s , 年龄是:%d" % (self.name, self.age) p1 = People('susu',18) print(p1) """ 执行结果如下: __str__名字是:susu , 年龄是:18 """
当打印People 的时候 , 默认会调用__str__() 方法
__repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员
主要是 如果在控制台中 直接输入People则调用 __repr__ 方法, 看下图
注意事项:
注意 __str__和__repr__需要用 return 一定要返回一个str 类型 , 否则 会报错
TypeError: __str__ returned non-string (type NoneType)