Python 小练习

作者: Python高效编程 | 来源:发表于2019-01-21 22:54 被阅读0次

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

    相关文章

      网友评论

        本文标题:Python 小练习

        本文链接:https://www.haomeiwen.com/subject/xzfkjqtx.html