重载方法格式:
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中类方法重载---大部分的更多相关文章

  1. 卧槽,好强大的魔法,竟能让Python支持方法重载

    1. 你真的了解方法重载吗? 方法重载是面向对象中一个非常重要的概念,在类中包含了成员方法和构造方法.如果类中存在多个同名,且参数(个数和类型)不同的成员方法或构造方法,那么这些成员方法或构造方法就被 ...

  2. Python 的方法重载

    为防止两个模块互相导入的问题,Python默认所有的模块都只导入一次,如果需要重新导入模块,Python2 7可以直接用reload(),Python3可以用下 为防止两个模块互相导入的问题,Pyth ...

  3. python中类方法,实例方法,静态方法的作用和区别

      Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么 ...

  4. Python中类方法、__new__方法和__init__方法解析

    在编程语言中创建一个类,有构造方法这样的一个术语.而在Python中,通常大家都认为__init__是构造方法,其实并不完全等同.在构建类中,有一个特殊的方法__new__,这个才能等同为构造方法. ...

  5. python 中类方法@classmethod

    classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下: class C: @classmethod def f(cls, arg1, arg2, .. ...

  6. paip.编程语言方法重载实现的原理及python,php,js中实现方法重载

    paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...

  7. python中类中属性和方法的具体定义方法和使用

    1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...

  8. python中类的定义、实例化、封装以及私有变量/方法

    1.  定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 ...

  9. Python是否存在方法方法重载及是否可以不显示声明初始化方法

    一.python中是否存在方法重载 对java有了解的程序员都知道,java中存在构造方法重载和普通方法重载,重载指的是方法名相同,参数列表不同的多个方法.python中是否也支持这两种方法重载,测试 ...

随机推荐

  1. BZOJ2818 GCD 【莫比乌斯反演】

    2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 6826 Solved: 3013 [Submit][Status][Discuss ...

  2. MSSQL事务在C#程序端的使用

    拼接成一条SQL执行 优点:简单,容易看懂: 缺点:某些场合,涉及的业务较多,在同一SQL处理显得太冗长,复杂,不利于解耦. 使用细节 在方法之间传递参数,确保多个方法中的SQL都是使用同一个事务的( ...

  3. istringstream()函数的用法

    istringstream()函数的用法 头文件:#include 功能:将一个含有多个空格的字符串分割开来 eg:

  4. [Python]安装完pip、pygame后,仍然import pygame报错

    按照<python编程从入门到实践>上的教程下载了pygame的whl文件进行安装, 在cmd窗口里import pygame提示无错误,在IDEL里程序也能正常运行, 但是pycharm ...

  5. 《vue.js实战》练习---标签页组件

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  6. 【Foreign】划分序列 [线段树][DP]

    划分序列 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 9 4 ...

  7. bzoj1503: [NOI2004]郁闷的出纳员 fhqtreap版

    这道题写法和之前差不多 但是fhqtreap在加点的时候为了同时维护大根堆以及二叉排序树的性质所以插入时也要注意分裂 fhqteap需要判断指针是否为空 不然就会re 这个我调了很久 #include ...

  8. 【洛谷 P4289】[HAOI2008]移动玩具(搜索)

    其实这题可以不用状压.. 提供一种新思路. 我们在读入目标棋盘的时候,把当前位置的数和当前棋盘进行比较,如果不一样,如果当前是\(1\),目标是\(0\),那么我们就把当前位置加入\(needmove ...

  9. karma和jasmine的测试(包括angular测试)

    本篇博客主要就是针对现在日新月异的技术和快速开发,测试被很多人忽略,其实在开发中如何保证代码的质量以及逻辑的完整性,测试显得十分重要,本文就是负责karma+jasmine来测试. 1.搭建测试的环境 ...

  10. 在Xcode6中搭建Python开发环境

    http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑,刚入门Python的同学,一定很好奇是不是可以使用Xc ...