Python基础—异常和面向对象

こ雲淡風輕ζ 提交于 2020-02-06 00:18:49

   期末笔记后期整理,如有问题,请多多指教。


一、异常

1、所有异常类都是Exception的子类

2、常见的异常

     ①NameError:访问未声明的变量

     ②ZeroDivisionError:除数为0

     ③SyntaxError(编译时发生)

     ④IndexError:序列中不存在的索引

     ⑤KeyError:字典中不存在的键访问值时

     ⑥FileNotFoundError

     ⑦AttributeError:尝试访问未知对象属性

3、异常处理

     ①捕获简单异常

        try:

          #语句块

        except:

          #异常处理代码(捕获所有异常)

        当try里面语句出现错误时,不再继续执行try中语句,直接执行except中处理异常的语句。

     ②捕获多个异常

        try:

          #语句块

        except 异常名称1:

          #异常处理代码

        except 异常名称2:

          #异常处理代码

     except(异常名1,异常名2):

     ③捕获异常的描述信息:为了区分不同的错误信息,使用as获取系统反馈的错误信息。       

        except(ZeroDivisionError,ValueError) as result:

               print("捕获到异常:%s"%result)

 

        except Exception as result:
               print("捕获到异常:%s"%result)

     ④没有捕获到异常:如果try语句没有捕获到任何的错误信息,就不再执行except,而会执行else语句

        try:

           ...

        except:

           ...

        else:

           ...

        在没有except的try语句中使用else语句,会引发语法错误。

     ⑤终止行为:无论是否捕获到异常,都要执行一些终止行为,如关闭文件、释放锁等,用finally语句处理。

#完整语句格式:
try:
   #...
except A:
   #...
except:
   #...
else:
   #...
finally:
   #...

4、抛出异常

     ①raise语句

        raise 异常类                 #引发异常时会隐式创建对象

        raise 异常类对象          #引发类对象对应异常

        raise                           #重新引发刚刚发生的异常

raise IndexError


index_error=IndexError()
raise index_error


try:
   raise IndexError
except:
   print("出错了!")
   raise

     ②指定异常的描述信息

raise IndexError("...")

     ③异常引发异常

raise IndexError("...") from exception

二、面向对象

1、类的定义

     ①类名(首字母必须大写)

     ②属性:事物特征

     ③方法:事物行为

class 类名:

     类的属性

     类的方法

     方法和函数的区别:方法必须显式的声明一个self参数,而且位于参数列表的开头。

2、根据类创建对象

        对象名=类名()     #p=Person()

     给对象添加属性

        对象名.新的属性名=值     #p.age=18

3、构造方法:__init__()

     当创建类的实例的时候,系统会自动调用构造方法,从而实现对类进行初始化的操作。

def __init__(self):
     self.color="red"


'''
def __init__(self,color):
     self.color=color
'''

4、析构方法:__del__()

     当删除一个对象来释放类所占用的资源时,默认调用析构方法。(程序结束)

5、self

     在方法的定义中,第一个参数永远是self,当某个对象调用方法时,会把这个对象作为第1个参数传给self。

6、封装

     ①私有属性:属性名前加两个下划线

     ②添加供外界调用的方法:设置和获取属性值

class Person:
   def __init__(self,name):
        self.__name=name
   def set_name(self,new_name):
        self.__name=new_name
   def get_name(self):
        return self.__name

7、继承——class 子类名(父类名):

     ①若定义类的时候没有标注出父类,则这个类默认继承自object的

         如:class Person(object):与class Person:等价

        父类的私有属性和私有方法不会被子类继承和访问。

     ②Python语言支持多继承

         如:class 子类(父类1,父类2,...)

        子类继承的多个父类间是平行的关系,子类先继承的哪个类就会调用哪个类的方法。

     ③重写父类方法

         调用父类方法:如super().__init__(leg_count)

8、多态

9、类属性和实例属性

class Cat(object):
   #类属性
   number=0
  
   def __init__(self):
      #实例属性
      self.age=1


cat=Cat()
cat.number#用对象访问类属性
Cat.number#用类访问类属性(常用)

10、类方法@classmethod和静态方法@staticmethod

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!