运算符相关的魔术方法实在太多了,j就大概列举下面两类:

1、比较运算符魔术方法说明

__cmp__(self, other)如果该方法返回负数,说明 self < other; 返回正数,说明 self > other; 返回 0 说明 self == other 。强烈不推荐来定义 __cmp__ , 取而代之, 最好分别定义 __lt__, __eq__ 等方法从而实现比较功能。 __cmp__ 在 Python3 中被废弃了。

__eq__(self, other)定义了比较操作符 == 的行为

__ne__(self, other)定义了比较操作符 != 的行为

__lt__(self, other)定义了比较操作符 < 的行为

__gt__(self, other)定义了比较操作符 > 的行为

__le__(self, other)定义了比较操作符 <= 的行为

__ge__(self, other)定义了比较操作符 >= 的行为

来看个简单的例子就能理解了:#!/usr/bin/env python3

# -*- coding: UTF-8 -*-

class Number(object):

def __init__(self, value):

self.value = value

def __eq__(self, other):

print('__eq__')

return self.value == other.value

def __ne__(self, other):

print('__ne__')

return self.value != other.value

def __lt__(self, other):

print('__lt__')

return self.value

def __gt__(self, other):

print('__gt__')

return self.value > other.value

def __le__(self, other):

print('__le__')

return self.value <= other.value

def __ge__(self, other):

print('__ge__')

return self.value >= other.value

if __name__ == '__main__':

num1 = Number(2)

num2 = Number(3)

print('num1 == num2 ? --------> {} \n'.format(num1 == num2))

print('num1 != num2 ? --------> {} \n'.format(num1 == num2))

print('num1  {} \n'.format(num1

print('num1 > num2 ? --------> {} \n'.format(num1 > num2))

print('num1 <= num2 ? --------> {} \n'.format(num1 <= num2))

print('num1 >= num2 ? --------> {} \n'.format(num1 >= num2))

输出的结果为:__eq__

num1 == num2 ? --------> False

__eq__

num1 != num2 ? --------> False

__lt__

num1  True

__gt__

num1 > num2 ? --------> False

__le__

num1 <= num2 ? --------> True

__ge__

num1 >= num2 ? --------> False

2、算术运算符魔术方法说明

__add__(self, other)实现了加号运算

__sub__(self, other)实现了减号运算

__mul__(self, other)实现了乘法运算

__floordiv__(self, other)实现了 // 运算符

___div__(self, other)实现了/运算符. 该方法在 Python3 中废弃. 原因是 Python3 中,division 默认就是 true division

__truediv__(self, other)实现了 true division. 只有你声明了 from __future__ import division 该方法才会生效

__mod__(self, other)实现了 % 运算符, 取余运算

__divmod__(self, other)实现了 divmod() 內建函数

__pow__(self, other)实现了 ** 操作. N 次方操作

__lshift__(self, other)实现了位操作 <<

__rshift__(self, other)实现了位操作 >>

__and__(self, other)实现了位操作 &

__or__(self, other)实现了位操作 `

__xor__(self, other)实现了位操作 ^

python算术运算相关魔法方法_运算符相关的魔术方法相关推荐

  1. python魔术方法是什么_Python常用魔术方法

    什么是魔术方法? 在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行. 魔术方法在类 ...

  2. 《Python进阶系列》十二:最全魔术方法整理

    Python中的魔术方法 所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊方法中.比如在类A中自定义__str__()函数,则在调用s ...

  3. php 魔术方法 多继承,PHP通过魔术方法实现多继承与重载

    PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的.当调用当前环境下未定义 ...

  4. 时间序列预测方法_让我们使用经典方法预测您的时间序列

    时间序列预测方法 时间序列预测 (Time Series Forecasting) 背景 (Background) We learned various data preparation techni ...

  5. 光滑噪声数据常用的方法_九大常用数据分析方法汇总

    来源:数据宝典 转载:中国统计网 一.描述性统计 定义:描述性统计是一类统计方法的汇总,揭示了调查总体的数据分布特性.描述性统计分析要对调查总体所有变量的有关数据进行统计性描述,主要包括数据的频数分析 ...

  6. java数字排序方法_常见的数据排序方法

    排序,顾名思义,就是将一组无序的数据按照指定的顺序(一般是从大到小或从小到大)进行排列的过程.不管是在Java还是在JavaScript.PHP.C/C++等编程语言中,对数组(或集合)进行排序都是程 ...

  7. mysql 魔术设置_详解php魔术方法(Magic methods)的使用方法

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

  8. java查询类提供的方法_查询一个类的方法和构建器的JAVA程序

    查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...

  9. java时间中间加横杠方法_知识点:java一些方法会有横线?以Date 过期方法为例...

    原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...

最新文章

  1. 小白程序员仅用5分钟入职BAT,他只做了这件事!
  2. 洛谷P2633 Count on a tree
  3. python按概率输出分类结果_sklearn例程:多分类输出概率
  4. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第7章-二阶时滞多智能体系统分组一致性
  5. .NET Core项目部署到linux(Centos7)
  6. python:DataFrame输出为csv(Pandas的to_csv()使用)
  7. 《Axure RP 9实战指南》Axure RP 9.0最新版汉化问题
  8. 日期,时间相关R代码
  9. 如何开发Alexa Intent skill
  10. 安卓系统实现播放器变速功能
  11. 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(三)
  12. html文件内容重叠,html – CSS:页脚重叠内容,其他故障
  13. 日志组的状态:CURRENT、ACTIVE、INACTIVE
  14. 【bat】批处理教程之for的/f参数
  15. 悟道 冥 与 力 万事皆可成
  16. 浮标水质监测站是什么
  17. Spring Boot 入门教程 | 图文讲解
  18. Xception深度可分离卷积-论文笔记
  19. 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
  20. Echarts绘制多层树图

热门文章

  1. stm32f427iih6_STM32F427IIH6
  2. android经典DEMO
  3. 教你如何用卡巴斯基屏蔽迅雷上传
  4. 基于51单片机简单病床呼叫系统
  5. 【LeetCode】【二叉树的最近公共祖先】
  6. 微信html5切水果游戏,推荐这3个切水果的小游戏,打开微信小程序试试吧!
  7. angularJS的复选框
  8. 使用Maya进行手部模型拓扑
  9. Java实现 蓝桥杯VIP 算法提高 打水问题
  10. java rcp教程_建立RCP大致步骤