【发布时间】:2013-04-10 03:01:46
【问题描述】:
给定一个简单的类
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]
为什么abs(Vector([-3,4])) 正确产生5 而round(Vector([-3.1,4])) 抱怨TypeError: a float is required 而不是所需的[-3,4],如何解决这个问题?
我知道round 通常应该返回一个浮点数,但是对于本例中的向量,可能的含义可能没有歧义,那么为什么不能简单地覆盖它呢?我真的必须继承numbers.Real,还是定义Vector(...).round(n)?
【问题讨论】:
标签: python class python-2.7 rounding