Python 小练习

这一节,我们来实现一个简单的 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()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前几天闲来没事,翻看微信好友,惊讶的发现从12年开始到现在,我已经坐拥600+好友。150定律(Rule Of 1...
    滢滢_5402阅读 3,483评论 1 5
  • 1、python内置函数接收用户输入字符串,并将其输出。 encoding:utf-8 str1 = raw_in...
    MagicalGuy阅读 2,472评论 0 0
  • 主要是自己尝试写的一些比较简单实用的算法,不定时更新,希望大家喜欢 第一题: 数据格式化 就是将一段被插入了其他字...
    LanceAdd阅读 2,924评论 0 0
  • 北方的冬天漫长而寒冷。或许是正是由于气候的原因,造就了北方人粗犷豪放的饮食方式。 寒冷的冬天,叫上三五好友,找一家...
    良子鱼阅读 4,558评论 11 31
  • 老家门口有一个长长的斜坡,小时候我经常来来回回的跑上去再冲下来,享受这样被风簇拥着的感觉。但是最刺激的是爷爷骑着自...
    阿瞳正传阅读 3,738评论 0 0

友情链接更多精彩内容