dunder一览

类别 方法
字符 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有相关的例子。

你可能感兴趣的:(dunder一览)