首页 > 编程语言 > 详细

Python模拟数据类型

时间:2021-09-06 21:15:59      阅读:21      评论:0      收藏:0      [点我收藏+]

利用特殊方法,来使得自定义对象来实现一个二维向量(Vector)类

一个简单的二维向量类

from math import hypot


class Vector:
    def __init__(self, x=0, y=0):
        self.x = x  # 将输入的x,y分别赋值给类属性x,y
        self.y = y

    def __repr__(self):  # 特殊方法来定义得到一个对象的字符串表示形式
        return ‘Vector(%r,%r)‘ % (self.x, self.y)

    def __abs__(self):
        return hypot(self.x, self.y)  # hypot函数计算x,y的平方和开根号

    def __bool__(self):
        return bool(abs(self))  # 如果一个向量的模是0就返回False
        # return bool(self.x and self.y)更高效的__bool__特殊方法的写法
        # 省掉了从abs到__abs__到平方再到平方根的这些中间步骤

    def __add__(self, other):  # 用特殊方法__add__来定义向量与其他向量之间的加法
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x, y)

    def __mul__(self, scalar):  # 用特殊方法__mul__来定义与标量之间的乘法
        return Vector(self.x * scalar, self.y * scalar)
v1 = Vector(2, 4)  # 实例化向量类Vector
print(v1)
v2 = Vector(2, 1)
print(v1 + v2)  # 向量之间的加法
print(abs(Vector(3, 4)))  # 计算向量的模
print(v1 * 3)  # 向量与标量之间的乘法
Vector(2,4)
Vector(4,5)
5.0
Vector(6,12)

Python模拟数据类型

原文:https://www.cnblogs.com/Reion/p/15234574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!