dunder一览
2018-12-26 本文已影响0人
剑侠飞蓬
类别 | 方法 |
---|---|
字符 | repr,str,format,bytes |
数值转化 | abs,bool,complex,int,float,hash,index |
集合 | len,getitem,setitem,delitem,contains |
迭代 | iter,reversed,next |
可调用 | call |
上下文 | enter,exit |
对象创建与销毁 | new,init,del |
属性管理 | getattr,getattribute,setattr,delattr,dir |
属性描述符 | get,set,delete |
类相关 | prepare,instancecheck,subclasscheck |
运算符 | 一元:neg,pos,abs 比较:lt,le,eq,nq,ne,gt,ge 运算:add,sub,mul,truediv,floordiv,mod,divmod,pow,round 反向运算:r.. 增量赋值运算:i.. 位运算符:invert,lshift,rshift,and,or,xor 反向位运算符: r.. 增量赋值位运算符:i.. |
简单说明:
- str默认实现调用repr,str注重可读性,repr注重消除二义性,print,logger会用str处理,str的+不会自动转化
- contains缺失时会调用getitem,参数从0到无穷大,直到遇到IndexError异常或遇到相应的元素
- iter缺失时,迭代会调用getitem,参数从0到无穷大,直到遇到IndexError异常
- reversed默认调用len和getitem,random.choice亦然
- exit参数分别为,异常类型,异常值,和traceback,with代码块无异常时为None,None,None,有异常时exit可以得到异常信息并且决定处理方式。当返回一个bool为True的值时,异常会被捕获,否则,异常会抛出
- getattr仅在属性不存在时调用,getattribute都会调用
- 比较运算符和逻辑的位运算符可以用于criteria来增强可读性,sqlalchemy和celery有相关的例子。