这一节,我们来实现一个简单的 Vector 类。
Vector 类有两个属性,为 x,y 坐标,即对应向量的横纵坐标。
首先,实现重载 + 号的方法def __add__
,及实现两个向量的加法。具体做法是:将加号两边的 Vector 对象的 x, y值相加,得到新的 x, y值并且返回一个新的向量对象。
__sub__
方法实现了 Vector 对象的减法,和加法差不多。让向量对象的对应属性相减,并返回新的向量对象。
__ads__
方法,使得可以对实例进行 ads操作(即取横纵坐标的模)。
__mul__
方法,使得实例可以通过乘法进行伸缩的操作。
__repr__
与__str__
方法使得打印对象更加美观。
import math
# Python高效编程
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return Vector(x, y)
def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
return Vector(x, y)
def __abs__(self):
return math.sqrt(self.x ** 2 + self.y ** 2)
def __bool__(self):
return bool(self.x or self.y)
def __mul__(self, times):
return Vector(self.x * times, self.y * times)
def __repr__(self):
return 'Vector({}, {})'.format(self.x, self.y)
__str__ = __repr__
def main():
v1 = Vector(3, 5)
v2 = Vector(4, 5)
v3 = v1 + v2
v4 = v3 * 2
v5 = v2 - v1
print(v3)
print(v4)
print(abs(v3))
print(v5)
if __name__ == '__main__':
main()