|
|
40鱼币
本帖最后由 碗碗的泡菜坛 于 2016-8-24 15:29 编辑
继上次那个问题之后 我又遇到了问题
书里的例子是这样的:(定义了一个描述向量的类,并且实现了两向量相加、单个向量长度累加方向不变的功能)
- from math import hypot
- class Vector:
- def __init__(self, x=0, y=0):
- self.x = x
- self.y = y
- def __repr__(self):
- return 'Vector(%s, %s)' % (self.x, self.y)
- def __abs__(self):
- return hypot(self.x, self.y)
- def __bool__(self):
- return bool(abs(self))
- def __add__(self, other):
- x = self.x + other.x
- y = self.y + other.y
- return Vector(x, y)
- def __mul__(self, scalar):
- 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啊都查了。。。我真的还是没看懂
--------其他的我自己的猜测我就不说了,我就求个解释 |
|