鱼C论坛

 找回密码
 立即注册
查看: 2333|回复: 8

[已解决]__repr__ = __str__ 这一句是什么意思?

[复制链接]
发表于 2017-11-17 11:55:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def __str__(self):
        return self.prompt
__repr__ = __str__            

请教:  __repr__ = __str__       这一句是什么意思?谢谢大家!!!
最佳答案
2017-11-17 12:14:22
  1. >>> class A:
  2.         def __str__(self):
  3.                 return self.prompt
  4.         __repr__ = __str__

  5.        
  6. >>> id(A.__str__),id(A.__repr__)
  7. (102390640, 102390640)
  8. >>> type(A.__str__),type(A.__repr__)
  9. (<class 'function'>, <class 'function'>)
  10. >>> A.__str__ is A.__repr__
  11. True
复制代码


二者是同一个地址的函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-17 12:10:24 | 显示全部楼层
参考
https://zhidao.baidu.com/question/688119027156731524.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-17 12:14:22 | 显示全部楼层    本楼为最佳答案   
  1. >>> class A:
  2.         def __str__(self):
  3.                 return self.prompt
  4.         __repr__ = __str__

  5.        
  6. >>> id(A.__str__),id(A.__repr__)
  7. (102390640, 102390640)
  8. >>> type(A.__str__),type(A.__repr__)
  9. (<class 'function'>, <class 'function'>)
  10. >>> A.__str__ is A.__repr__
  11. True
复制代码


二者是同一个地址的函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-17 12:15:57 | 显示全部楼层
请教:  __repr__ = __str__       这一句是什么意思?谢谢大家!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-17 12:19:11 | 显示全部楼层
SixPy 发表于 2017-11-17 12:14
二者是同一个地址的函数

请问:  __repr__ = __str__   
这个是 __repr__被赋值了__str__ 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-17 12:43:11 | 显示全部楼层
694061755 发表于 2017-11-17 12:19
请问:  __repr__ = __str__   
这个是 __repr__被赋值了__str__ 吗?


二者是同一个函数的两个别名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-17 14:57:09 | 显示全部楼层
本帖最后由 第四时空 于 2017-11-17 14:58 编辑

在不重写的情况下,
简单来说str方法是给"用户"看的,repr是给"程序员"看的。
str会把转义符转义后再输出出来,而repr不会,是直接把"源文本"输出出来。(不是很会表达)
举个例子就是
  1. >>>a = "hello\nworld"

  2. >>>print(a.__str__())
  3. hello
  4. world

  5. >>>print(a.__repr__())
  6. 'hello\nworld'
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-18 10:02:14 | 显示全部楼层
SixPy 发表于 2017-11-17 12:43
二者是同一个函数的两个别名

def __str__(self):
        return self.prompt
__repr__ = __str__         
----------------------------------------------
def __str__(self):
        return self.prompt
def __repr__(self):
        return self.prompt

那么它们的意思是一样的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-20 06:54:04 | 显示全部楼层
本帖最后由 timeislife 于 2017-11-20 06:55 编辑
694061755 发表于 2017-11-18 10:02
def __str__(self):
        return self.prompt
__repr__ = __str__         


不是,就有点像list2 = list1[:] 和list2 = list1不一样
但是你的代码如果不进行对这两个方法进行修改的话就是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表