给定一个简单的类
class Vector(object):
def __init__(self, value):
self.value = value
def __abs__(self):
return math.sqrt(sum([x**2 for x in self.value]))
def __round__(self, *n):
return [round(x,*n) for x in self.value]
为什么在抱怨 a而不是 desired时abs(Vector([-3,4]))
正确 yield ,如何解决?5
round(Vector([-3.1,4]))
TypeError: a float is required
[-3,4]
我知道round
通常应该返回一个浮点数,但是对于本例中的向量,可能的含义可能没有歧义,那么为什么不能简单地覆盖它呢?我真的必须继承numbers.Real
或定义Vector(...).round(n)
吗?