python 类的使用2

#!/usr/bin/python
#coding:utf-8

import math

#下面是一个向量的计算

class Vector(object):
    #初始化函数(可传参数)
    def __init__(self,x=0.0,y=0.0):
        self.x = x
        self.y = y
    #打印类的时候使用的(print Vector())
    def __str__(self):
        return '(%s,%s)'%(self.x,self.y)

    #创建一个静态的类,计算向量的
    @classmethod
    def from_point(cls,P1,P2):
        #向量的计算
        return cls(P2.x-P1.x,P2.y-P1.y)
    #向量的大小可以简单的理解为那根箭头的长度,勾股定理熟稔的各位立刻知道怎么计算了
    #math.sqrt(3**2+4**2) 勾股定理
    def get_magnitude(self):
        return math.sqrt(self.x**2 + self.y**2)

    #获取单位向量
    def normalize(self):
        magnitude = self.get_magnitude()
        self.x /= magnitude
        self.y /= magnitude
        return self.x,self.y

    #加法运算
    def __add__(self,rhs):
        return Vector(self.x + rhs.x,self.y + rhs.x)

    def __sub__(self,rhs):
        return Vector(self.x - rhs.x,self.y - rhs.y)

    def __mul__(self,scalar):
        return Vector(self.x * scalar,self.y * scalar)

    def __div__(self,scalar):
        return Vector(self.x / scalar,self.y / scalar)


if __name__ == '__main__':
    A = Vector(10.0, 20.0)
    B = Vector(30.0, 35.0)
    AB = Vector.from_point(A, B)
    print AB.x
    print "Vector AB is", AB
    print "AB * 2 is", AB * 2
    print "AB / 2 is", AB / 2
    print "AB + (–10, 5) is", AB + AB
    print "Magnitude of AB is", AB.get_magnitude()
    print "AB normalized is", AB.normalize()



#输出
20.0
Vector AB is (20.0,15.0)
AB * 2 is (40.0,30.0)
AB / 2 is (10.0,7.5)
AB + (鈥?0, 5) is (40.0,35.0)
Magnitude of AB is 25.0
AB normalized is (0.8, 0.6)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值