鱼C论坛

 找回密码
 立即注册
查看: 2662|回复: 9

看书自学遇到问题 求助(2)关于%r和%s

[复制链接]
发表于 2016-8-24 15:30:17 | 显示全部楼层 |阅读模式
40鱼币
本帖最后由 碗碗的泡菜坛 于 2016-8-24 15:29 编辑

继上次那个问题之后 我又遇到了问题

书里的例子是这样的:(定义了一个描述向量的类,并且实现了两向量相加、单个向量长度累加方向不变的功能)
  1. from math import hypot

  2. class Vector:
  3.     def __init__(self, x=0, y=0):
  4.         self.x = x
  5.         self.y = y
  6.     def __repr__(self):
  7.         return 'Vector(%s, %s)' % (self.x, self.y)
  8.     def __abs__(self):
  9.         return hypot(self.x, self.y)
  10.     def __bool__(self):
  11.         return bool(abs(self))
  12.     def __add__(self, other):
  13.         x = self.x + other.x
  14.         y = self.y + other.y
  15.         return Vector(x, y)
  16.     def __mul__(self, scalar):
  17.         return Vector(self.x * scalar, self.y * scalar)
复制代码


----------------------------
这本书的作者解释说:
Note that in our __repr__ implementation, we used %r to obtain the standard representation of the attributes to be displayed. This is good practice, because it shows the crucial difference between Vector(1, 2) and Vector('1', '2')—the latter would not work in the context of this example, because the constructor’s arguments must be numbers, not str.

*懒得看(或者英语有障碍的朋友看这里,我翻译得比较烂见谅):
注意我们执行的__repr__方法,我们用%r来获得标准的表达,用来描述需要显示的属性。这样用很棒,因为Vector(1, 2)和 Vector('1', '2')这样的显示结果的差别就因此展现了--Vector('1', '2')这样的显示结果用在这个例子里不合适,因为用来构造向量的参数必须是数字类型,而不是字符串。


你别看我勉强翻译出来了 ,但是我根本没看懂!!!!

----------------------------

我到网上查了%r和%s的区别、__repr__和__str__的区别、repr()和str()的区别,什么百度啊stackoverflow啊都查了。。。我真的还是没看懂


--------其他的我自己的猜测我就不说了,我就求个解释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-8-24 16:56:03 | 显示全部楼层
repr()和str()的区别

repr() 是给解释器看的, eval(repe(obj)) == obj
str()  是给人看的,免得你看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-24 18:06:29 | 显示全部楼层
SixPy 发表于 2016-8-24 16:56
repr()和str()的区别

repr() 是给解释器看的, eval(repe(obj)) == obj

什么情况下显示结果会变成Vector('1', '2')????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-24 18:08:13 | 显示全部楼层
fishcany 发表于 2016-8-24 18:03
这段话的意思就是用%r可以看出是字符串还是数字
This is good practice,这是个好习惯
举个栗子

啊啊啊啊啊啊啊啊啊懂了!!!!!!!厉害厉害!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-24 18:56:10 | 显示全部楼层
fishcany 发表于 2016-8-24 18:15
姐姐
英语不好不要看原版书!!!
英语不好不要看原版书!!!

你走开!谁说我英语不好!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-7 22:44:50 | 显示全部楼层
感觉问题好多啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-9-8 14:40:35 | 显示全部楼层

因为我英语不太好+编程基础薄弱
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-1-16 16:31:45 | 显示全部楼层
因为我英语不太好+编程基础薄弱
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-1-16 17:03:35 | 显示全部楼层
啊啊啊啊啊啊啊啊啊懂了!!!!!!!厉害厉害!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-1-17 11:08:03 | 显示全部楼层
列表[1:2]。刚学到列表,楼主加油
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 09:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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