课程
/后端开发
/Python
/Python3 进阶教程(新版)
如果类中只定义__str__()方法,没有定义__repr___()方法,打印对象同样可以打印出格式化后的对象,而不是地址
2021-05-05
源自:Python3 进阶教程(新版) 4-2
正在回答
个人理解:只要重写了 __str__()方法,不管是打印对象还是打印对象的字符串格式,其调用的都是 __str__()方法,所以显示的都是格式化的结果。也就是说,print(str(obj)) 和 print(obj) 是一样的
而只有在控制台(window下的cmd,命令提示符)中,在python环境下直接输入(不是打印)obj,回车,调用的才是 __repr__()方法。如果没有重写该方法,还是会显示对象所在的地址
str是对用户 显式调用时可以打印,repr是在控制台直接输出 对象变量时调用,需要自己再重写,不然还是地址内容输出
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计