zoukankan      html  css  js  c++  java
  • python编程基础之三十五

    系统的魔术方法:系统的魔术方法特别多,但是也都特别容易懂,简单的讲就是对系统的内置函数进行重写,你需要什么效果就重写成什么样,

    比如说len()方法针对的对象本来没有自定义类的对象,但是当你重写了__len()__这个魔术方法时候,就可以对你需要的进行计算了,这个需要积累

    这里给个例子吧

     1 class Dog:
     2     def __init__(self, l):
     3         self.l = []
     4         self.l.extend(l)
     5     def __len__(self):
     6         return len(self.l)
     7 
     8 
     9 l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    10 d1 = Dog(l1)
    11 print(len(d1))
    魔术方法举例

    异常处理:try - except语句

     1 try:
     2         【代码块A】 #可能会出错误的代码    异常检测
     3     except Exception1[ as e]:   #异常处理
     4      【代码块1】  #异常处理代码       
     5     except Exception2[ as e]:   #异常处理
     6          【代码块2】  #异常处理代码
     7     ....
     8     except Exceptionn[ as e]:   #异常处理
     9       【代码块n】  #异常处理代码
    10     [else:]                #可选,如果没有引发异常会执行
    11         处理语句       
    12     [finally:]             #无论如何都要执行的语句
    13         处理语句
    14     【后续语句】
    异常处理
    • except匹配顺序从上到下

    • except语句书写要求:精确的类型往前放,模糊的,不精确的往后放

    • except不带任何类型,则匹配所有类型异常,应该放到最后,吞掉异常

    • 可以将多种异常用元组的方式(异常类型1,异常类型2...异常类型n)书写,简化代码

    • except字句中e,是一个对象,打印它,会显示异常信息描述

    • try-except也可以捕获方法或函数中抛出的异常

    • 所有异常类型都继承自BaseException,使用BaseException可以将异常一网打尽

    • finally字句中可以进行一些清理工作,比如关闭文件,数据库等工作

    抛出异常:手动抛出一个异常,无论哪种异常都可以带一个参数字符串,如果没有带参数,则会把异常原样抛出

    1 try:
    2     raise ZeroDivisionError('除0错误')
    3     # raise ZeroDivisionError  #如果不想获取错误信息,可以不带参数
    4 except ZeroDivisionError as e:
    5     print(e)  #除0错误
    抛出异常

    assert 断言:

    asser 条件 [,异常描述字符串]

      执行流程:如果条件为假,则抛出AssertionError,条件为真,就当assert不存在

    ​  作用:对于可能出问题的代码,加上断言,方便问题排查

    1 print('start')
    2 num = int(input('请输入一个1~9的整数:'))
    3 assert 0 <num <9,'num不在1~9'
    4 print('end')
    assert断言

    自定义异常:如果说系统异常类型已经无法满足自己,那么就可以写个自定义异常

    • 自己定义的异常类必须继承BaseException或Exception

    • 步骤:

      • 在自定义异常类的构造函数中,调用父类构造函数

      • 重写__str__方法输出异常信息

      • 编写异常处理方法处理异常

     1 class CustomError(BaseException): #继承BaseException
     2     def __init__(self,msg):
     3         super().__init__()  #调用父类初始化
     4         self.msg = msg
     5         
     6     #重写__str__,输出异常信息
     7     def __str__(self):
     8         return self.msg
     9     
    10     #3.自定义异常处理方法
    11     def handle_exception(self):
    12         print('异常处理')
    13         
    14 try:
    15     raise CustomError('自定义异常')
    16 except CustomError as e:
    17     print(e)
    自定义异常
  • 相关阅读:
    循环队列
    UVa10000_Longest Paths(最短路SPFA)
    最新jhost免费jsp云空间会员邀请码
    Vertica: 基于DBMS架构的列存储数据仓库
    java中接口的定义与实现
    【C++知识汇总】运营商 &amp; 运算符重载
    SVN与eclipse整合和利用、SVN与Apache综合
    Java单链逆转
    hdu1115(重力算法的多边形中心)
    高效C++规划
  • 原文地址:https://www.cnblogs.com/higer666/p/9459266.html
Copyright © 2011-2022 走看看