with:

  __enter__

  __exit__
dic={}
获取容器中指定元素的行为
dic["name"] = "egon" #设置值   

__setitem__ dic["name"] #取值   __getitem__
类的创建
__call__ 对象的创建
__new__ # 如果在__new__中return 了字符串,那么就不会走自身的 __init__ ,而是去走 str 的__init__ 构造方法
  __init__
  当一个实例被创建的时候初始化属性的方法
析构方法

    __del__
# 该内存释放时触发的方法,例垃圾回收机制在回收掉一块空间时
取属性值
__getattr__
# 当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法 设置属性值
__setattr__
# 当设置实例属性时自动调用__setattr__
删除属性
    __delattr__ 访问已有属性
    __getattribute__(self, name)
    # 对象通过点已有属性取值时调用
容器长度
__len__(self)
# 返回容器长度
容器迭代器
__iter__(self)
# 做迭代器时必须包含此方法,尤其是当内置的iter()方法被调用的时候,以及当使用for x in container:方式循环的时候。迭代器是它们本身的对象,它们必须定义返回self的__iter__方法。
序列反转
__reversed__(self)
# 当reversed()被调用时的行为,仅当序列可以是有序的时候实现它,例如对于列表或者元组。
调用in和not in来测试成员是否存在的时候所产生的行为
__contains__(self, item)
# 如果没有定义,那么Python会迭代容器中的元素来一个一个比较,从而决定返回True或者False
双链序列通过key找不到容器元素触发
__missing__(self, key)
# dict字典类型会有该方法,它定义了key如果在容器中找不到时触发的行为。比如d = {'a': 1}, 当你执行d['name']时,d.__missing__['name']就会被调用。
反射
__instancecheck__(self, instance)
# 检查一个实例是不是你定义的类的实例 __subclasscheck__(self, subclass)
# 检查一个类是不是你定义的类的子类
复制
__copy__(self)
# 当对你的类的实例调用copy.copy()时所产生的行为,浅拷贝 __deepcopy__(self, memodict={})
# 当对你的类的实例调用copy.deepcopy()时所产生的行为, 深拷贝
比较
__cmp__(self, other) # 是比较方法里面最基本的的魔法方法 __eq__(self, other) # 定义相等符号的行为,== __ne__(self,other) # 定义不等符号的行为,!= __lt__(self,other) # 定义小于符号的行为,< __gt__(self,other) # 定义大于符号的行为,> __le__(self,other) # 定义小于等于符号的行为,<= __ge__(self,other) # 定义大于等于符号的行为,>=
单目运算符和函数
__pos__(self) # 定义负号的行为:-x __neg__(self) # 定义正号的行为:+x __abs__(self) # 实现一个内建的abs()函数的行为 __invert__(self) # 实现一个取反操作符(~操作符)的行为 __round__(self, n) # 实现一个内建的round()函数的行为 __floor__(self) # 实现math.floor()的函数行为 __ceil__(self) # 实现math.ceil()的函数行为 __trunc__(self) # 实现math.trunc()的函数行为
双目运算符和函数
__add__(self, other) # 实现一个加法 __sub__(self, other) # 实现一个减法 __mul__(self, other) # 实现一个乘法 __floordiv__(self, other) # 实现一个“//”操作符产生的整除操作() __div__(self, other) # 实现一个“/”操作符代表的除法操作 __truediv__(self, other) # 实现真实除法 __mod__(self, other) # 实现一个“%”操作符代表的取模操作 __divmod__(self, other) # 实现一个内建函数divmod() __pow__ # 实现一个指数操作(“**”操作符)的行为 或power()调用 __lshift__(self, other) # 实现一个位左移操作(<<)的功能 __rshift__(self, other) # 实现一个位右移操作(>>)的功能 __and__(self, other) # 实现一个按位进行与操作(&)的行为 __or__(self, other) # 实现一个按位进行或操作的行为 __xor__(self, other) # __xor__(self, other)
增量运算
__iadd__(self, other) # 加法赋值 __isub__(self, other) # 减法赋值 __imul__(self, other) # 乘法赋值 __ifloordiv__(self, other) # 整除赋值,地板除,相当于 //= 运算符 __idiv__(self, other) # 除法赋值,相当于 /= 运算符 __itruediv__(self, other) # 真除赋值 __imod_(self, other) # 模赋值,相当于 %= 运算符 __ipow__ # 乘方赋值,相当于 **= 运算符 __ilshift__(self, other) # 左移赋值,相当于 <<= 运算符 __irshift__(self, other) # 左移赋值,相当于 >>= 运算符 __iand__(self, other) # 与赋值,相当于 &= 运算符 __ior__(self, other) # 或赋值 __ixor__(self, other) # 异或运算符,相当于 ^= 运算符
类型转换
__int__(self) # 转换成整型 __long__(self) # 转换成长整型 __float__(self) # 转换成浮点型 __complex__(self) # 转换成 复数型 __oct__(self) # 转换成八进制 __hex__(self) # 转换成十六进制 __index__(self) # 如果你定义了一个可能被用来做切片操作的数值型,你就应该定义 __index__ __trunc__(self) # 当 math.trunc(self) 使用时被调用__trunc__返回自身类型的整型截取 __coerce__(self, other) # 执行混合类型的运算
    
     __bytes__(self) # 被 bytes() 调用时的行为      __hash__(self)  # 被 hash() 调用时的行为
    
     __bool__(self)  # 被 bool() 调用时的行为
  
     __format__(self, format_spec) # 被 format() 调用时的行为
    
     __repr__(self) # 被 repr() 调用时的行为      __dir__(self) # 当 dir() 被调用时的行为

未完待续....

python基础关键词触发的魔法方法的更多相关文章

  1. python基础第9章 魔法方法、属性和迭代器(一)

    __getitem__和__setitem__: 这个方法返回与指定键想关联的值.对序列来说,键应该是0~n-1的整数,其中n为序列的长度.对映射来说,键可以是任何类型. class A : __ge ...

  2. Python类属性访问的魔法方法

    Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- ...

  3. 【python学习笔记】9.魔法方法、属性和迭代器

    [python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...

  4. python基础之序列类型的方法——字符串方法

    python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部 ...

  5. python学习笔记之七:魔法方法,属性

    在python中,有的名称会在前面和后面加上两个下划线,由这些名字组成的集合所包含的方法称为魔法方法(或者是特殊方法).如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下(确切地说是根据名 ...

  6. python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题

    1. 重写一般方法和特殊的构造方法 1.1 如果一个方法在B类的一个实例中被调用(或一个属性被访问),但在B类中没有找到该方法,那么会去它的超类A里面找. class A: ... def hello ...

  7. Python学习笔记:06魔法方法和迭代器

    魔法方法,属性和迭代器 新式类 通过赋值语句__metaclass=true或者class NewStyle(object)继承内建类object,可以表明是新式类. 构造方法 对象被创建后,会立即调 ...

  8. Python笔记(二十三)_魔法方法_字符串的魔法方法

    __str__和__repr__ 如果要把一个类的实例变成字符串,就需要实现魔法方法__str__()和__repr__ >>>class A: def name(self): re ...

  9. python基础学习笔记5--对象方法、属性和迭代器

    对象方法.属性和迭代器 1.构造方法 1)构造方法和一般方法的不同点:当一个对象被创建后,会立即调用构造方法. 2)在Python中创建一个构造方法很容易,只要把init方法的名字从简单的init修改 ...

随机推荐

  1. 五十七.分布式ELK平台、ES安装 、 扩展插件 、Kibana安装

    1. ES集群安装 准备1台虚拟机 部署elasticsearch第一个节点 访问9200端口查看是否安装成功   1ELK是日志分析平台,不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 ...

  2. DOS窗口启动tomact,运用startup.bat/shutdown.bat命令启动/关闭tomcat

    设置CATALINA_HOME环境变量1.CATALINA_HOME是TOMCAT安装路径的别名,目的是为了方便使用TOMCAT2.计算机>属性>环境变量, 新建环境变量.变量名为CATA ...

  3. java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    在pom.xml文件中添加如下依赖: <!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n --> <depe ...

  4. number-progression-network

    T1给定一个 $n$ 位的数字串,要求修改若干位,使得至少包含 $k$ 个相同的数位,最小化代价. Sol 考虑枚举那种数字作为答案,选代价前 $k$ 小的修改成目标数字. 有一部分的数字是必须修改的 ...

  5. 【luoguSP3267】--莫队,不同数字个数

    题意翻译 给出一个长度为n 的数列,a1​​ a2​​ ,...an​ ,有q 个询问,每个询问给出数对(i,j),需要你给出ai​​ ai+1​​ ,...,aj​​ 这一段中有多少不同的数字 题目 ...

  6. hive的两种使用方式

    hive的两种使用方式 1,hive shell的方式 启动命令: bin/hive 2.beeline客户端方式 首先在一个机器上启动hive thrift服务 bin/hiveserver2 在其 ...

  7. hive安装常见错误

    hive编译出错 mvn clean package -DskipTests -Phadoop-2 -Pdist 失败日志1 Failed to execute goal on project hiv ...

  8. [python]函数默认参数顺序问题

    python 函数参数定义有四类: 1.必选参数:调用函数时候必须赋值的参数. a,须以正确的顺序传入函数b,调用时的数量必须和声明时的一样 def exa(x): return x #b作为参数进入 ...

  9. intle官方手册下载

    如题:https://software.intel.com/en-us/articles/intel-sdm#three-volume 方便哪些不会怎么搜索的同学吧. 链接: https://pan. ...

  10. 动态规划——区间DP,计数类DP,数位统计DP

    本博客部分内容参考:<算法竞赛进阶指南> 一.区间DP 划重点: 以前所学过的线性DP一般从初始状态开始,沿着阶段的扩张向某个方向递推,直至计算出目标状态. 区间DP也属于线性DP的一种, ...