Pthon魔术方法(Magic Methods)-运算符重载

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Python运算符对应的魔术方法

1>.比较运算符

  <:
    对应__lt__   <=:
    对应__le__   ==:
    对应__eq__   >:
    对应__gt__   >=:
    对应__ge__   !=:
    对应__ne__

2>.算数运算符

  +:
    对应__add__   -:
    对应__sub__   *:
    对应__mul__   /:
    对应__truediv__   %:
    对应__mod__   //:
    对应__floordiv__   **:
    对应__pow__   divmod:
    对应__divmod__

3>.赋值运算符

  +=:
    对应__iadd__,一般会in-place就地来修改自身,如果没有定义该方法就会去找__add__方法。   -=:
    对应__isub__,一般会in-place就地来修改自身,如果没有定义该方法就回去找__sub__方法,以下同理。   *=:
    对应__imul__   /=:
    对应__itruediv__   %=:
    对应__imod__   //=:
    对应__ifloordiv__   **=:
    对应__ipow__

二.案例展示

 #!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie """
完成Point类设计,实现判断点相等的方法,并完成向量的加法。
""" class Point:
def __init__(self,x,y):
self.x = x
self.y = y def __eq__(self, other):
return self.x == other.x and self.y == other.y def __add__(self, other):
return Point(self.x + other.x,self.y + other.y) def add(self,other):
return (self.x + other.x,self.y + other.y) def __str__(self):
return "<Point:{},{}>".format(self.x,self.y) p1 = Point(10,20)
p2 = Point(3,9) #使用普通方法调用
print(p1.add(p2)) #使用运算符重载方法调用
print(p1 + p2)
print(p1 == p2) #以上代码执行结果如下:
(13, 29)
<Point:13,29>
False

三.运算符重载应用场景

  往往是用咋子面向对象实现的类,需要大量的运算,而运算符是这种运算在数学上最常见的表达方式。

  例如,上例中的对"+"进行了运算符重载,实现了Point类的二元操作,重新定义为Point + Point。

  提供运算符重载,比直接提供方法要更加适合该领域内使用的习惯。

  int类,几乎实现了所有操作符,可以作为参考。

Pthon魔术方法(Magic Methods)-运算符重载的更多相关文章

  1. php中的魔术方法(Magic methods)和魔术常亮

    PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __cal ...

  2. Pthon魔术方法(Magic Methods)-容器相关方法

    Pthon魔术方法(Magic Methods)-容器相关方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.容器相关方法汇总 __len__: 内建函数len(),返回对象的 ...

  3. Pthon魔术方法(Magic Methods)-描述器

    Pthon魔术方法(Magic Methods)-描述器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.描述器概述 1>.描述器定义 Python中,一个类实现了&quo ...

  4. Pthon魔术方法(Magic Methods)-反射

    Pthon魔术方法(Magic Methods)-反射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.反射概述 运行时,区别于编译时,指的时程序被加载到内存中执行的时候. 反射 ...

  5. Pthon魔术方法(Magic Methods)-上下文管理

    Pthon魔术方法(Magic Methods)-上下文管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上下文管理方法 __enter__: 进入与此对象相关的上下文.如果 ...

  6. Pthon魔术方法(Magic Methods)-可调用对象

    Pthon魔术方法(Magic Methods)-可调用对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.可调用对象方法 __call__: 类中定义一个该方法,实例就可以像 ...

  7. Pthon魔术方法(Magic Methods)-bool

    Pthon魔术方法(Magic Methods)-bool 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool方法 __bool__: 内建函数bool(),或者对象放在逻 ...

  8. Pthon魔术方法(Magic Methods)-hash

    Pthon魔术方法(Magic Methods)-hash 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.hash方法 __hash__: 内建函数hash()调用的返回值,返 ...

  9. Pthon魔术方法(Magic Methods)-可视化

    Pthon魔术方法(Magic Methods)-可视化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于可视化的魔术方法简介 __str__: str()函数,format ...

随机推荐

  1. sql 连续分组判断 partition by

    partition by 会根据分类字段进行排序 加上rownum 可以形成 每组从1开始重新排序 举个例子, 我要根据时间为依据,连续出现合并为一组,统计每组在区间里的次数 ------------ ...

  2. 【计算机视觉】OpenCV篇(10) - 模式识别中的模板匹配

    什么是模式识别? 它指的是,对表征事物或现象的各种形式的信息进行处理和分析,从而达到对事物或现象进行描述.辨认.分类和解释的目的. 我们之所以可以很快辨别猫是猫.O不是0,就是因为在我们大脑中已经给猫 ...

  3. istio1.0 实现蓝绿发布(未完成)

    istio1.0 实现蓝绿发布 环境: 192.168.0.91 master 192.168.0.92 node 第一步:安装k8s集群,参照:https://www.cnblogs.com/eff ...

  4. All LeetCode Questions List 题目汇总

    All LeetCode Questions List(Part of Answers, still updating) 题目汇总及部分答案(持续更新中) Leetcode problems clas ...

  5. SpringBoot示例教程(一)MySQL与Mybatis基础用法

    示例需求 在Springboot2框架中,使用Mysql和Mybatis功能:1. Mysql+Datasource集成2. Mybatis+XML用法详解 数据库准备 采用了Oracle中的scot ...

  6. C#中各种Lock的速度比较

    简单写了个小程序,比较了一下C#中各种Lock的速度(前提是都没有进入wait状态). 各进入离开Lock 1kw次,结果如下: Lock Time (ms) No lock 58 CriticalS ...

  7. kubernetes常用命令:缩容扩容回滚

    查看版本 kubectl version 查看节点 kubectl get nodes 部署app 说明: 提供deployment名称和app镜像地址(docker镜像地址) kubectl run ...

  8. 阿里云 安装docker

    转  https://www.jianshu.com/p/f02d63ee98e0

  9. C#:蓝牙串口读数据和写数据

    首次使用C#编写与COM口有关的程序,期间遇到了很多问题,写下自己的经验总结,如有错漏,欢迎批评指正! 1.新建一个串口类( SerialPort类) //Create a serial port f ...

  10. php mysqli 预处理操作数据库

    用到的SQL表 CREATE TABLE `student_01` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARAC ...