from math import hypot
class Vector:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __repr__(self):
return 'Vector(%r, %r)' % (self.x, self.y)#输出结果Vector([1, False, {'key': 'val'}, (1, 2, 3)], ['2', '3', '4'])
# return 'Vector({}, {})'.format(self.x, self.y)#输出结果Vector([1, False, {'key': 'val'}, (1, 2, 3)], ['2', '3', '4'])
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)
if __name__ == '__main__':
v = Vector([1, False, {"key": "val"}, (1, 2, 3)], ["2", "3", "4"])
print(v)
由此可见 %r会将原有格式保留 是我们输出重写__repr__的比较理想的选择