既然python都原配__str()__和__repr__()两种方法了,为啥还要自己在类的下面重新定义一遍__str()__和__repr__()?

来源:4-2 Python类的__str__ 和 __repr__方法

葡萄葡萄

2020-10-20 07:36

这是因为 Python 定义了__str()__和__repr__()两种方法,__str()__用于显示给用户,而__repr__()用于显示给开发人员,当使用str()时,实际调用的是__str__()方法,而直接输入变量,调用的是__repr__()方法。


既然python都原配__str()__和__repr__()两种方法了,为啥还要自己在Person类的下面重新定义一遍__str()__和__repr__()?

这节课整个没看懂......?


__str()__用于显示给用户,而__repr__()用于显示给开发人员

是指str这个方法,python允许用户用?而repr只能开发人员用?

还是说str的结果反馈到用户桌面?而repr的结果只有原开发者能看到?

哎..不懂..


写回答 关注

1回答

  • Zobeltitz
    2020-10-22 05:54:13
    已采纳

    在自己自定义的类中的这两个方法继承自Object类,可能不符合自己的需求(比如说输出太难读了)。所以需要在自己的类中重写这两个方法,覆盖继承的这两个方法,执行新的功能。(在Python的内建数据类型(字符串,整型等)中应该已经重写过这个方法了)

    str和repr用户和开发者都可以使用,结果均打印在命令行中。区别在于这两个的函数的作用的定义,str注重用户的可读性(在某些应用里可能会输出图表之类的?),repr注重开发和调试期间的使用(课程中说:”在终端(Terminal)中直接输入变量的时候“,用户不太用直接使用终端编写程序),因此repr可能还会额外输出一些比如说对象的类名之类的信息吧。

    以上是我的理解,可能没有特别准确,希望你觉得还行哈

    葡萄葡萄

    感谢感谢!!!非常详细~让我比之前清楚多了

    2020-10-22 07:14:29

    共 1 条回复 >

Python3 进阶教程(新版)

学习函数式、模块和面向对象编程,掌握Python高级程序设计

41910 学习 · 236 问题

查看课程

相似问题