重载方法格式:
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. com.mongodb.MongoException$CursorNotFound: cursor not found on server异常处理

    java链接MongoDB处理大量数据时经常碰到cursor not found 的异常,其实是超时所致 Exception in thread "main" com.mongod ...

  2. Every Programmer Should Know These Latency Numbers

    Every Programmer Should Know These Latency Numbers 1秒=1000毫秒(ms) 1秒=1,000,000 微秒(μs) 1秒=1,000,000,00 ...

  3. Qt 设置应用程序图标(windows)

    Step 1: 创建  xxx.rc 文件. 将ico图标文件复制到项目根目录下.然后在该目录中新建xxx.rc文件,并输入一行代码: IDI_ICON1 ICON DISCARDABLE " ...

  4. IDEA 用maven创建web项目编译时不能发布resources中的文件

    1.在pom.xml加入 <build> <resources> <resource> <directory>${basedir}/src/main/j ...

  5. Struts2 内建的验证规则

    Struts2 内建的验证规则 conversion validator:转换验证器 date validator:日期验证器 double validator:浮点验证器 email validat ...

  6. decimal数据类型

    DECIMAL(N,M)中M是小数部分的位数,若插入的值未指定小数部分或者小数部分不足M位则会自动补到M位小数,若插入的值小数部分超过了M为则会发生截断,截取前M位小数. N是整数部分加小数部分的总长 ...

  7. PL/SQL 02 声明变量 declare

    语法:identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr] identifier:用于指定变量或常量的名称.CONSTANT:用于 ...

  8. 使用System.getProperty("line.separator")时没有换行问题解决

    项目中要实现替换模版txt文本里面的内容,然后生成新的文档,其中先把模版文本的内容通过创建的 BufferedReader bufReader 使用 readLine() 来一行一行读取,所以在完成替 ...

  9. 搜索引擎--范例:SAE创建新应用,SVN管理代码

    最初接触的平台是新浪SAE平台,虽然限制多得要命,速度也不怎么样,但无论怎么样,人家是“免费的”,免费的东西你还想怎么样?是不是? 1:注册登录新浪SAE,这个不用多说,相信你们的智商 2:创建一个新 ...

  10. poj 3254(状态压缩+动态规划)

    http://poj.org/problem?id=3254 题意:有一个n*m的农场(01矩阵),其中1表示种了草可以放牛,0表示没种草不能放牛,并且如果某个地方放了牛,它的上下左右四个方向都不能放 ...