python异常(⾼级)Exception
异常(⾼级) Exception
  异常回顾:
    try-except 语句 捕获(接收)异常通知,把异常流程变为正常流程
    try-finally 语句 执⾏必须要执⾏的语句.
    raise 语句 发送异常通知,同时进⼊异常流程
    assert 语句 发送AssertionError异常
    with 语句
with语句
  语法:
    with 表达式1 [as 变量1], 表达式2 [as 变量2], ...:
      语句块
  作⽤:
  使⽤于对资源进⾏访问的场合,确保使⽤过程中不管是否发⽣异常都会
说明:
  with语句同try-finally语句⼀样,不会改变程序的状态(异常或正常状态)
环境管理器:
  类内有'__enter__' 和 '__exit__' 实例⽅法的类被称为环境管理器能够⽤with语句进⾏管理的对象必须是环境管理器  __enter__将在进⼊with语句之前被调⽤,并返回由as 变量管理的对象
  __exit__ 将在离开with语句时被调⽤,且可以⽤参数来判断在离开with语句时是否有异常发⽣并做出相应的处理
异常类:
  BaseExcetion 类是⼀切异常类的基类
  ⾃定义的异常类型必须直接或间接的继承⾃BaseExcetion类运算符重载
  让⾃定义的类⽣成的对象(实例) 能够使⽤运算符进⾏操作
  作⽤:
    让⾃定义类的实例像内建对象⼀样进⾏运算符操作
    让程序简洁易读
    对⾃定义对象将运算符赋予新的运算规则
  说明:
    运算符已经有固定的含义,不建议改变原有运算符的含义  ⽅法名          运算符和表达式    说明  __add__(self, rhs)    self + rhs      加法
  __sub__(self, rhs)    self - rhs      减法
  __mul__(self, rhs)    self * rhs      乘法
  __truediv__(self, rhs)  self / rhs      除法
  __floordiv__(self, rhs)  self // rhs      地板除法  __mod__(self, rhs)    self % rhs      求余  __pow__(self, rhs)    self ** rhs      幂运算  rhs (right hand side)   右⼿边
⼆元运算符的重载⽅法:
  def __xxx__(self, other):
    ...
反向算术运算符的重载
  当运算符的左侧为内建类型时,右侧为⾃定义类的对象进⾏算术运算符运算时,会出现TypeError错误,因⽆法修改内建类型的代码来实现运算符重载,此时需要反向算术运算符重载
⽅法如下:
  ⽅法名          运算符和表达式    说明
  __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)    左⼿边
复合赋值算术运算符的重载
  以复合赋值算述运算符 x += y 主为例,此运算符会优先调⽤x.__iadd__(y) ,如果没有__iadd__⽅法时,会将复合赋值运算符拆解为 x = x + y然后调⽤x = x.__add__(y)⽅法,如再不存在__add__⽅法,则会触发TypeError错误
  其它复合赋值运算符有相同的规则
  ⽅法名          运算符和表达式  说明
  __iadd__(self, rhs)    self += rhs    加法
  __isub__(self, rhs)    self -= rhs    减法
  __imul__(self, rhs)    self *= rhs    乘法
  __itruediv__(self, rhs)  self /= rhs    除法
  __ifloordiv__(self, rhs)  self //= rhs    地板除法
  __imod__(self, rhs)    self %= rhs    求余
  __ipow__(self, rhs)    self **= rhs    幂运算
  rhs (right hand side)   右⼿边
python新手代码错了应该怎么改
⽐较运算符的重载
  ⽅法名        运算符和表达式   说明
  __lt__(self, rhs)    self < rhs     ⼩于
  __le__(self, rhs)    self <= rhs    ⼩于等于  __gt__(self, rhs)    self > rhs    ⼤于
  __ge__(self, rhs)    self >= rhs    ⼤于等于  __eq__(self, rhs)    self == rhs    等于
  __ne__(self, rhs)    self != rhs    不等于注: ⽐较运算符通常返回布尔值 True 或 False
位运算符的重载
  ⽅法名          运算符和表达式  说明  __and__(self, rhs)    self & rhs    位与  __or__(self, rhs)     self | rhs    位或
  __xor__(self, rhs)    self ^ rhs    位异与  __lshift__(self, rhs)   self << rhs    左移
  __rshift__(self, rhs)  self >> rhs    右移
反向位运算符的重载
  ⽅法名          运算符和表达式  说明  __rand__(self, lhs)    lhs & self    位与
  __ror__(self, lhs)    lhs | self    位或
  __rxor__(self, lhs)    lhs ^ self    位异与  __rlshift__(self, lhs)  lhs << self    左移

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。