Python中类方法重载---大部分
重载方法格式:
def __xxx__(self,other):
...
注:重载方法格式
-----------------------------------------------------------------运算符
运算符重载:
作用:
让自定义的类创建的对象像内建对象一样进项运算符操作
算数运算符:
__add__ 加法 +
__sub__ 减法 -
__mul__ 乘法 *
__truedif__ 除法 /
__floordiv__ 地板除 //
__mod__ 取模(求余) %
__pow__ 幂 **
反向算数运算符重载:
__radd__(self, lhs) # 加法 lhs + self
__rsub__(self, lhs) # 减法 lhs + self
__rmul__(self, lhs) # 乘法 lhs * self
__rtruediv__(self, lhs) # 除法 lhs / self
__rfloordiv__(self, lhs) # 地板除 lhs // self
__rmod__(self, lhs) # 取模 lhs % self
__rpow__(self, lhs) # 幂运算 lhs ** self
注:lhs(left hand side) 左手边
复合赋值算数运算符的重载:
__iadd__(self, other) # 加法 self += other
__isub__(self, other) # 减法 self -= other
__imul__(self, other) # 乘法 self *= other
__itruediv__(self, other) # 除法 self /= other
__ifloordiv__(self, other) # 地板除 self //= other
__imod__(self, other) # 取模 self %= other
__ipow__(self, other) # 幂运算 self **= other
注:当重载后优先使用重载的方法,否则使用__add__等方法代替
-----------------------------------------------------------------比较运算符
比较运算符重载:
__lt__ 小于 <
__le__ 大于等于 <=
__gt__ 大于 >
__ge__ 大于等于 >=
__eq__ 等于 ==
__ne__ 不等于 !=
-----------------------------------------------------------------位操作运算符
位操作运算符重载:
__and__ 位与 &
__or__ 位或 |
__xor__ 位异或 ^
__lshift__ 左移 <<
__rshift__ 右移 >>
反向位操作运算符:
__rand__ 位与 &
__ror__ 位或 |
__rxor__ 位异或 ^
__rlshift__ 左移 <<
__rrshift__ 右移 >>
复合赋值位运算符重载:
__iand__ 位与 &
__ior__ 位或 |
__ixor__ 位异或 ^
__ilshift__ 左移 <<
__irshift__ 右移 >>
-----------------------------------------------------------------一元运算符
一元运算符的重载:
__neg__ 符号 -
__pos__ 正号 +
__invert__ 取反 ~
重载格式:
def __xxx__(self):
pass
-----------------------------------------------------------------内建函数
内建函数重载:
def __abs__(self) abs(obj) 函数调用
def __len__(self) len(obj) 函数调用
def __reversed__(self) reversed(obj) 函数调用
def __round__(self) round(obj) 函数调用
-----------------------------------------------------------------数值转换函数
数值转换函数重载:
__int__ int(obj)
__float__ float(obj)
__complex__ complex(obj)
__bool__ bool(obj)
-----------------------------------------------------------------布尔测试运算符
布尔测试运算符重载:
格式:
def __bool__(self):
....
作用:
1) 用于bool(obj) 函数取值
2) 用于if语句真值表达式中
3) 用于while语句真值表达式中
重载说明:
当没有 __bool__(self) 方法时,真值测试将取
__len__(self) 方法的返回值来测试布尔值
-----------------------------------------------------------------in / not in
in / not in 运算符重载:
格式:
def __contains__(self, e):
...
作用:
成员资格测试(通常)
-----------------------------------------------------------------索引和切片
索引和切片运算符的重载:
重载方法:
__getitem__(self, i) 方法
__sefitem__(self, i, v) 方法
__delitem__(self, i) 方法
作用:
让自定义类型的对象能进行索引和切片操作
切片(slice)重载:
切片重载同性索引重载公用的方法
__getitem__(self, i) 切片取值
__sefitem__(self, i, v) 切片赋值
__delitem__(self, i) del切片删除
-----------------------------------------------------------------迭代器重载
迭代器:
__next__(self):
可迭代对象:
__iter__(self):
-----------------------------------------------------------------with环境管理器类内重载
类内有__enter__ 和 __exit__ 方法的类被称为环境管理器
能够用with进行管理的对象必须是环境管理器
__enter__ 方法将在进入 with 语句时被调用返回由 as 变量管理的对象
__exit__ 方法将在离开with语句时被调用,且可以用参数来判断离开with语句时是否有异常发生并作出相应的处理
Python中类方法重载---大部分的更多相关文章
- 卧槽,好强大的魔法,竟能让Python支持方法重载
1. 你真的了解方法重载吗? 方法重载是面向对象中一个非常重要的概念,在类中包含了成员方法和构造方法.如果类中存在多个同名,且参数(个数和类型)不同的成员方法或构造方法,那么这些成员方法或构造方法就被 ...
- Python 的方法重载
为防止两个模块互相导入的问题,Python默认所有的模块都只导入一次,如果需要重新导入模块,Python2 7可以直接用reload(),Python3可以用下 为防止两个模块互相导入的问题,Pyth ...
- python中类方法,实例方法,静态方法的作用和区别
Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么 ...
- Python中类方法、__new__方法和__init__方法解析
在编程语言中创建一个类,有构造方法这样的一个术语.而在Python中,通常大家都认为__init__是构造方法,其实并不完全等同.在构建类中,有一个特殊的方法__new__,这个才能等同为构造方法. ...
- python 中类方法@classmethod
classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下: class C: @classmethod def f(cls, arg1, arg2, .. ...
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...
- python中类中属性和方法的具体定义方法和使用
1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...
- python中类的定义、实例化、封装以及私有变量/方法
1. 定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 ...
- Python是否存在方法方法重载及是否可以不显示声明初始化方法
一.python中是否存在方法重载 对java有了解的程序员都知道,java中存在构造方法重载和普通方法重载,重载指的是方法名相同,参数列表不同的多个方法.python中是否也支持这两种方法重载,测试 ...
随机推荐
- [Leetcode] plus one 加一
Given a number represented as an array of digits, plus one to the number. 题意:给定数以数组的形式存储,然后计算该数加1的值. ...
- 【NOIP模拟赛】藏宝图 最小生成树
性质:我们把最小生成树建出来,如果其距离符合那么就是对的,不符合就是错的 因为这是个n^2的图所以不能Kruskal只能Prim #include <cstdio> #include &l ...
- size用法小记
By francis_hao Feb 14,2017 列出二进制文件各个段的大小和总大小 概述 选项解释 -A -B --format=compatibility 选择显示的格式, -A = - ...
- Windows下安装Mycat
Mycat 首先在安装Mycat之前,需要安装JDK1.7以上,可以在cmd环境下输入 java -version 查看本地安装的java版本 如果未安装或者版本在1.7以下,请重新安装. 安装JDK ...
- SpringMVC学习 -- 使用 @RequestMapping 映射请求
在控制器的类定义及方法出定义出都可以标注 @RequestMapping: 类定义处:提供初步的请求映射信息.相对于 Web 应用的根目录. 方法定义出:提供进一步的细分映射信息.相对于类定义处的 U ...
- mysql5.7.11安装遇到的问题
首次安装mysql5.7.11绿色版,真是破费功夫,现记录安装中遇到的问题,只是解决了问题,而不清楚问题的由来. 问题一: 问题二: 问题三: 问题四: 我的my.ini配置文件: [mysql] # ...
- 【UOJ131/NOI2015D2T2-品酒大会】sam求后缀树
题目链接:http://uoj.ac/problem/131 题意:给出一个字符串,第i个字符对应的值为a[i], 对于i∈[0,n),求最长公共前缀大于等于i的字串对个数,并求这些字符串对开头对应值 ...
- codechef T4 IPC Trainers
IPCTRAIN: 训练营教练题目描述 本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练.训练营的日 程安排有 M 天,每天最多上一节课.第 i 名教练 ...
- HDU1267 下沙的沙子有几粒? 基础DP
题目链接 题意:给定m个H和n个D(1<=n,m<=20),问这些字母构成的序列中,对于任意位置,从左开始数H的累积个数总是不比D的累计数少的排列有多少种. 题解:二维DP,画一个正方形, ...
- Atos cannot get symbols from dSYM of archived application
http://stackoverflow.com/questions/7675863/atos-cannot-get-symbols-from-dsym-of-archived-application ...