Warum kann für Nicht-Floats nicht "rund" definiert werden?
Bei einer einfachen Klasse wie
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]
warum tutabs(Vector([-3,4]))
richtig nachgeben5
währendround(Vector([-3.1,4]))
beschwert sich mit aTypeError: a float is required
statt der gewünschten[-3,4]
, und wie kann das behoben werden?
Ich kenneround
sollte normalerweise ein float zurückgeben, aber für einen Vektor wie in diesem Beispiel gibt es wahrscheinlich keine Mehrdeutigkeit bezüglich der möglichen Bedeutung. Warum kann dies nicht einfach überschrieben werden? Muss ich wirklich unterordnen?numbers.Real
oder definierenVector(...).round(n)
stattdessen?