魔法方法 含义
  基本的魔法方法
__new__(cls[, ...])

1.__new__是在一个对象实例化的时候所调用的第一个方法

2.它的第一个参数是这个类,其他的参数是用来直接传递给__init__方法

3.__new__决定是否要使用该__init__方法,因为__new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果__new__没有返回实例对象,则__init__不会被调用

4.__new__主要是用于继承一个不可变的类型比如一个tuple或者string

__init__(self[, ...]) 构造器,当一个实例被创建的时候调用的初始化方法
__del__(self) 析构器。当一个实例被销毁的时候调用的方法
__call__(self[, args...]) 允许一个类的实例像函数一样被调用:x(a, b) 调用 x.__call__(a, b)
__len__(self) 定义当被 len() 调用时的行为
__repr__(self) 定义当被 repr() 调用时的行为
__str__(self) 定义当被 str() 调用时的行为
__bytes__(self) 定义当被 bytes() 调用时的行为
__hash__(self) 定义当被 hash() 调用时的行为
__bool__(self) 定义当被 bool() 调用时的行为,应该返回True或False
__format__(self,format_spec) 定义当被 format() 调用时的行为
  有关属性
__getattr__(self, name) 定义当用户试图获取一个不存在的属性时的行为 
__getattribute__(self, name) 定义当该类的属性被访问时的行为 
__ setattr__(self, name, value) 定义一个属性被设置时的行为 
__delattr__(self, name) 定义一个属性被删除时的行为
__dir__(self)  定义当 dir() 被调用时的行为 
__get__(self, instance, owner)  定义当描述符的值被取得时的行为 
__set__(self, instance, value)  定义当描述符的值被改变时的行为 
__delete__(self, instance)  定义当描述符的值被删除时的行为 
   比较操作符
__lt__(self, other) 定义小于号的行为:x < y 调用 x.__lt__(y) 
__le__(self, other)  定义小于等于号的行为:x <= y 调用 x.__le__(y) 
__eq__(self, other)  定义等于号的行为:x == y 调用 x.__eq__(y)  
__ne__(self, other)  定义不等于号的行为:x != y 调用 x.__ne__(y) 
__gt__(self, other)  定义大于号的行为:x > y 调用 x.__gt__(y) 
__ge__(self, other) 定义大于等于号的行为:x >= y 调用 x.__ge__(y) 
  算数运算符 
__add__(self, other) 定义加法的行为:+ 
__sud__(self, other)  定义减法的行为:- 
__mul__(self, other)  定义乘法的行为:* 
__truediv__(self, other)  定义真除法的行为:/ 
__floordiv__(self, other)  定义整数除法的行为:// 
__mod__(self, other) 定义取模算法的行为:% 
__divmod__(self, other)  定义当被 divmod() 调用时的行为 
__pow__(self, other[, modulo])  定义当被 power() 调用或 ** 运算时的行为 
__lshift__(self, other) 

定义按位左移位的行为:<<

__rshift__(self, other)  定义按位右移位的行为:>>
__and__(self, other)  定义按位与操作的行为:& 
__xor__(self, other)   定义按位异或操作的行为:^ 
__or__(self, other)   定义按位或操作的行为:| 
   反运算
__radd__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rsub__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rmul__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rtruediv__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rfloordiv__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rmod__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rdivmod__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rpow__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rlshift__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rrshift__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rand__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__rxor__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
__ror__(self, other)    (与上方相同,当左操作数不支持相应的操作时被调用)
   增量赋值运算
__iadd__(self, other)   定义赋值加法的行为:+= 
__isub__(self, other)   定义赋值减法的行为:-= 
__imul__(self, other)   定义赋值乘法的行为:*= 
__itruediv__(self, other)   定义赋值真除法的行为:/= 
__ifloordiv__(self, other)   定义赋值整数除法的行为://= 
__imod__(self, other)   定义赋值取模算法的行为:%= 
__ipow__(self, other[, modulo])   定义赋值幂运算的行为:**= 
__ilshift__(self, other)   定义赋值按位左移位的行为:<<= 
__irshift__(self, other)   定义赋值按位右移位的行为:>>= 
__iand__(self, other)   定义赋值按位与操作的行为:&= 
__ixor__(self, other)   定义赋值按位异或操作的行为:^= 
__ior__(self, other)   定义赋值按位或操作的行为:|= 
  一元操作符 
__pos__(self) 定义正号的行为:+x 
__neg__(self)  定位负号的行为:-x 
__abs__(self)  定义当被 abs() 调用时的行为 
__invert__(self)  定义按位求反的行为:~x 
  类型转换 
__conplex__(self)  定义当被 complex() 调用时的行为(需要返回恰当的值) 
__int__(self)  定义当被 int() 调用时的行为(需要返回恰当的值) 
__float__(self)  定义当被 float() 调用时的行为(需要返回恰当的值) 
__round__(self)  定义当被 round() 调用时的行为(需要返回恰当的值) 
__index__(self) 

1.当对象是被应用在切片表达式中时,实现整形强制转换

2.如果你定义了一个可能在切片时用到的定制的数值型,你应该定义__index__

3.如果__index__被定义,则__int__也需要被定义,且返回相同的值

   上下文管理(with 语句)
__enter__(self) 

1.定义当使用with语句时的初始化行为

2.__enter__ 的返回值被 with 语句的目标或者 as 后的名字绑定

__exit__(self, exc_trpe, exc_value, traceback) 

1.定义当一个代码块被执行或者终止后上下文管理器应该做什么

2.一般被用来处理异常,清除工作或者做一些代码块执行完毕之后的日常工作

  容器类型
__len__(self)  定义当被 len() 调用时的行为(返回容器中元素的合数) 
__getitem__(self, key)  定义获取容器中指定元素的行为,相当于 self[key] 
__setitem__(self, ket, value)  定义设置容器中指定元素的行为,相当于 self[key] =value 
__delitem__(self, key)  定义删除容器中指定元素的行为,相当于 del self[key] 
__iter__(self)  定义当迭代容器中的元素的行为 
__reversed__(self)  定义当被 reversed() 调用时的行为 
__contains__(self, item)  定义当使用成员测试运算符 (in 或 not in)时的行为 

Python魔法方法详解的更多相关文章

  1. Python 魔法方法详解

    据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切. 他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个, ...

  2. [转载]Python 魔法方法详解

    据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切. 他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个, ...

  3. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息.        ...

  4. python MethodType方法详解和使用

    python 中MethodType方法详解和使用 废话不多说,直接上代码 #!/usr/bin/python # -*-coding:utf-8-*- from types import Metho ...

  5. Python String 方法详解

    官网文档地址:https://docs.python.org/3/library/stdtypes.html#string-methods 官网 公号:软测小生ruancexiaosheng 文档里的 ...

  6. python魔法方法大全

    1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...

  7. with上下文管理 python魔法方法

    with语法在Python里很常见, 主要的利好是使用代码更简洁. 常见的使用场景有: 1. 资源对象的获取与释放. 使用with可以简化try...finally ... 2. 在不修改函数代码的前 ...

  8. Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。

    Python urllib模块urlopen()与urlretrieve()的使用方法详解   1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) ...

  9. Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...

随机推荐

  1. Python数据分析基础教程

    Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...

  2. XVII Open Cup named after E.V. Pankratiev. GP of Moscow Workshops

    A. Centroid Tree 枚举至多两个重心作为根,检查对于每个点是否都满足$2size[x]\leq size[father[x]]$即可. #include<stdio.h> # ...

  3. (98)Wangdao.com_第三十天_拖拉事件

    拖拉事件 拖拉 drag ,是指用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里. 一旦某个元素节点的 draggable 属性设为true,就无法再用鼠标选中该节 ...

  4. 21 ArcMap 10.6.1 添加Excel格式数据

    注:此次的操作软件为ArcMap10.6.1,在ArcMap其它版本中也可使用,如遇到问题,欢迎交流. 1:Excel中数据(点)标准化(一般是经纬度),将原来的度分秒表示的都要转换成度表示的,如图所 ...

  5. 内核kmalloc内存越界排查过程(转)

    https://blog.csdn.net/hjkfcz/article/details/84500026 内核为了效率,memcpy完全是有汇编实现,加入c代码很困难.可以采用jprobe技术,动态 ...

  6. 腾讯云“智能+互联网TechDay”:揭秘智慧出行核心技术与创新实践

    现如今,地面交通出行与大家的生活息息相关.在当前城市道路日益复杂和拥挤的情况下,如何保证交通出行的安全和便捷相信是每个人以及众多专家.科研工作者重点关注的问题. “智慧交通”系统是解决交通发展瓶颈的有 ...

  7. 浅谈 R_S触发器

    1.. 1.要点 就是S R端谁是0谁就掌握了绝对权力,因为与门的缘故. 对于上图 S在左边,所以只要S是0 ,Q必定是1.另外对于R 只要R是0,Q非才能是1,q非又是S端的关键与信号,所以只有R为 ...

  8. Python读取xlsx翻译文案

    首先安装Python,然后安装模块 //查找模块(非必须) pip search xlrd //安装模块 pip install xlrd 由于输出要是utf-8所以需要设置默认环境为utf-8 # ...

  9. SIM7600C读写本机号码

    1 先发送AT+CPBS = "ON",表示要操作的是本机号码区域,而不是SIM的电话本 2 写入命令AT+CPBW=1,"1234567" 3 读取命令AT+ ...

  10. Express全系列教程之(三):get传参

    一.关于get请求 一般在网站开发中,get都用作数据获取和查询,类似于数据库中的查询操作,当服务器解析前台资源后即传输相应内容:而查询字符串是在URL上进行的,形如: http://localhos ...