函数str() 会调用__str__(),用于将值转化为适于人阅读的形式
函数repr() 会调用__repr__(),用于将值转化为解释器读取的形式
所以print展示的都是str的格式
__repr__() 会返回和调用者有关的 “类名+object at+内存地址”信息
test.py
class People(object):
def __new__(cls,*args,**kwargs):
print("People::__new__()")
return super().__new__(cls)
def __init__(self,name,age):
print("People::__init__()",name,age)
self.name = name
self.age = age
def __str__(self):
return self.name + ":" + str(self.age)
def __repr__(self):
return "hello world"
a = People("sandy",100)
上边是 __str__ 和 __repr__同时存在的情况下
如果只有__str__
如果只有__repr__
通过上边分析得出,如果需要调用__str__()而又不存在,它会去调用__repr__(),如果需要调用__repr__()而又不存在,它不会去调用__str__()。。。
解析器能读的 人肯定也能读,但是人能读的 解析器就不一定能读。。。