python算术运算相关魔法方法_运算符相关的魔术方法
运算符相关的魔术方法实在太多了,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算术运算相关魔法方法_运算符相关的魔术方法相关推荐
- python魔术方法是什么_Python常用魔术方法
什么是魔术方法? 在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行. 魔术方法在类 ...
- 《Python进阶系列》十二:最全魔术方法整理
Python中的魔术方法 所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊方法中.比如在类A中自定义__str__()函数,则在调用s ...
- php 魔术方法 多继承,PHP通过魔术方法实现多继承与重载
PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的.当调用当前环境下未定义 ...
- 时间序列预测方法_让我们使用经典方法预测您的时间序列
时间序列预测方法 时间序列预测 (Time Series Forecasting) 背景 (Background) We learned various data preparation techni ...
- 光滑噪声数据常用的方法_九大常用数据分析方法汇总
来源:数据宝典 转载:中国统计网 一.描述性统计 定义:描述性统计是一类统计方法的汇总,揭示了调查总体的数据分布特性.描述性统计分析要对调查总体所有变量的有关数据进行统计性描述,主要包括数据的频数分析 ...
- java数字排序方法_常见的数据排序方法
排序,顾名思义,就是将一组无序的数据按照指定的顺序(一般是从大到小或从小到大)进行排列的过程.不管是在Java还是在JavaScript.PHP.C/C++等编程语言中,对数组(或集合)进行排序都是程 ...
- mysql 魔术设置_详解php魔术方法(Magic methods)的使用方法
PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __cal ...
- java查询类提供的方法_查询一个类的方法和构建器的JAVA程序
查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...
- java时间中间加横杠方法_知识点:java一些方法会有横线?以Date 过期方法为例...
原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...
最新文章
- 小白程序员仅用5分钟入职BAT,他只做了这件事!
- 洛谷P2633 Count on a tree
- python按概率输出分类结果_sklearn例程:多分类输出概率
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第7章-二阶时滞多智能体系统分组一致性
- .NET Core项目部署到linux(Centos7)
- python:DataFrame输出为csv(Pandas的to_csv()使用)
- 《Axure RP 9实战指南》Axure RP 9.0最新版汉化问题
- 日期,时间相关R代码
- 如何开发Alexa Intent skill
- 安卓系统实现播放器变速功能
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(三)
- html文件内容重叠,html – CSS:页脚重叠内容,其他故障
- 日志组的状态:CURRENT、ACTIVE、INACTIVE
- 【bat】批处理教程之for的/f参数
- 悟道 冥 与 力 万事皆可成
- 浮标水质监测站是什么
- Spring Boot 入门教程 | 图文讲解
- Xception深度可分离卷积-论文笔记
- 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
- Echarts绘制多层树图