首页 > 编程语言 >Python 运算符重载

Python 运算符重载

时间:2024-06-08 23:43:58浏览次数:18  
标签:__ Vector Python self 运算符 other 重载

在Python中,运算符重载是一种允许你定义或修改内置运算符(例如 +, -, *, / 等)在自定义类中的行为的技术。通过重载运算符,你可以使这些运算符对自定义对象执行特定的操作。运算符重载是通过在类中定义特殊方法(也称为魔法方法)来实现的,这些方法通常以双下划线开头和结尾。

以下是一些常见运算符及其对应的魔法方法:

  1. 算术运算符

    • + (加法): __add__(self, other)
    • - (减法): __sub__(self, other)
    • * (乘法): __mul__(self, other)
    • / (除法): __truediv__(self, other)
    • // (整除): __floordiv__(self, other)
    • % (取模): __mod__(self, other)
    • ** (幂): __pow__(self, other)
  2. 比较运算符

    • == (等于): __eq__(self, other)
    • != (不等于): __ne__(self, other)
    • < (小于): __lt__(self, other)
    • <= (小于等于): __le__(self, other)
    • > (大于): __gt__(self, other)
    • >= (大于等于): __ge__(self, other)
  3. 位运算符

    • & (按位与): __and__(self, other)
    • | (按位或): __or__(self, other)
    • ^ (按位异或): __xor__(self, other)
    • ~ (按位取反): __invert__(self)
    • << (左移): __lshift__(self, other)
    • >> (右移): __rshift__(self, other)
  4. 其他运算符

    • [] (索引): __getitem__(self, key)
    • in (成员关系): __contains__(self, item)
    • len() (长度): __len__(self)

下面是一个简单的示例,展示如何重载加法运算符 + 和比较运算符 ==

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

    def __repr__(self):
        return f"Vector({self.x}, {self.y})"

# 示例用法
v1 = Vector(2, 3)
v2 = Vector(5, 7)
v3 = v1 + v2
print(v3)  # 输出: Vector(7, 10)

print(v1 == v2)  # 输出: False
print(v1 == Vector(2, 3))  # 输出: True

在这个示例中:

  • __add__ 方法定义了如何将两个 Vector 对象相加。
  • __eq__ 方法定义了如何比较两个 Vector 对象是否相等。
  • __repr__ 方法定义了当打印 Vector 对象时的输出格式。

标签:__,Vector,Python,self,运算符,other,重载
From: https://www.cnblogs.com/Undefined443/p/18239114

相关文章

  • Python_编程基础
    Python_编程基础Python编程基础0、简单介绍解释型语言:一边编译一边运行,不需要进行编译,运行效率比较低解释器JavaScript-浏览器python.exephp.exe编译型语言:运行前需要进行编译,运行效率比较高C.c->.exe组合:anaconda+pycharm、python+pycharm/sublime/geany/vs......
  • python>tqdm实现git进度条效果
    注意1:这里是在python3环境下使用的git,安装要使用pipinstallGitpython来安装在python环境下的git注意2:这个方法可适用于windows环境和Linux环境importgitimporttqdmrepo_url='https://gitee.com/alichinese/oebuild-bin.git'local_path='F:\\test\\oebuild-b......
  • Python数据结构解析:从基本语法到实战应用,提升代码效率与性能
    基本语法Python提供了多种内置的数据结构,包括列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)等。这些数据结构具有不同的特点和用途,可以根据需求选择合适的数据结构。1.列表(List)列表是Python中最常用的数据结构之一,用于存储一系列元素,可以是不同类型的数据。列表使用......
  • c# 编译器是如何帮我们实现方法重载 重写的
    在C#中,编译器通过以下方式帮助我们实现方法重载(Overloading)和方法重写(Overriding):方法重载(MethodOverloading)原理:编译时解析:C#编译器在编译阶段根据方法调用时提供的参数类型和数量来决定调用哪个重载版本。这个过程称为静态绑定或早期绑定,因为它发生在编译时期。签名匹配:编......
  • 相等运算符
    相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。1==1.0//等同于1===1.0比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。下面分成几种情况,讨论不同类型的值互相比较的规则。(1)原始类型值原始类型的值会转换成数值再......
  • 0004python金融量化初入门
    >Date:2024.04.24>Keywords:在量化投资(证券和比特币)开源项目里,全球star数排名前10位里面,有7个是Python实现的。从数据获取到策略回测再到交易,覆盖了整个业务链。而全球注册用户数最多的商业量化平台Uqer优矿,也同样是基于Python实现和提供服务的。国内后来的其他量化平台,例如ricequ......
  • 【python】OpenCV—Blob Detection(11)
    学习来自OpenCV基础(10)使用OpenCV进行Blob检测文章目录1、cv2.SimpleBlobDetector_create中文文档2、默认parameters3、配置parameters附录——cv2.drawKeypoints1、cv2.SimpleBlobDetector_create中文文档cv2.SimpleBlobDetector_create是OpenCV库中用于创......
  • 100天精通风控建模(原理+Python实现)——第28天:风控建模中逻辑回归是什么?主要应用在
    在当今风险多变的环境下,风控建模已经成为金融机构、企业等组织的核心工作之一。在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中逻辑回归是什么,主要应用在哪些方面。并提供风控建模原理和Python实现文章清单。  之前已经阐述了1......
  • python 多任务之多进程
    多任务优势多个任务同时执行可以大大提高程序执行效率,可以充分利用CPU资源,提高程序的执行效率概念是指在同一时间内执行多个任务多进程概念进程(process)是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位,比如:一个正在运行的程序就是一个进程,如QQ,微信等......
  • 运筹学练习Python精解——运输和指派问题
    练习1如下表的运输问题中总需要量超过总供应量(方框中的数字是单位运费)。假定对销地\(B_1\)、\(B_2\)和\(B_3\)未满足需要量的单位罚款成本是5、3和2,试建立该问题的数学模型,并探讨能否将其转变为产销平衡运输问题。产地\销地B1B2B3供应量A151710A264......