python中所有的异常类都是的子类_Python基础-异常和面向对象

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

一、异常

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值