Python 实现简单 Vector 类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_43773093/article/details/86586316

这一节,我们来实现一个简单的 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()

猜你喜欢

转载自blog.csdn.net/weixin_43773093/article/details/86586316