这是因为 Python 定义了__str()__和__repr__()两种方法,__str()__用于显示给用户,而__repr__()用于显示给开发人员,当使用str()时,实际调用的是__str__()方法,而直接输入变量,调用的是__repr__()方法。
既然python都原配__str()__和__repr__()两种方法了,为啥还要自己在Person类的下面重新定义一遍__str()__和__repr__()?
这节课整个没看懂......?
__str()__用于显示给用户,而__repr__()用于显示给开发人员
是指str这个方法,python允许用户用?而repr只能开发人员用?
还是说str的结果反馈到用户桌面?而repr的结果只有原开发者能看到?
哎..不懂..
在自己自定义的类中的这两个方法继承自Object类,可能不符合自己的需求(比如说输出太难读了)。所以需要在自己的类中重写这两个方法,覆盖继承的这两个方法,执行新的功能。(在Python的内建数据类型(字符串,整型等)中应该已经重写过这个方法了)
str和repr用户和开发者都可以使用,结果均打印在命令行中。区别在于这两个的函数的作用的定义,str注重用户的可读性(在某些应用里可能会输出图表之类的?),repr注重开发和调试期间的使用(课程中说:”在终端(Terminal)中直接输入变量的时候“,用户不太用直接使用终端编写程序),因此repr可能还会额外输出一些比如说对象的类名之类的信息吧。
以上是我的理解,可能没有特别准确,希望你觉得还行哈