python编程基础之三十五
2024-09-01 11:50:47
系统的魔术方法:系统的魔术方法特别多,但是也都特别容易懂,简单的讲就是对系统的内置函数进行重写,你需要什么效果就重写成什么样,
比如说len()方法针对的对象本来没有自定义类的对象,但是当你重写了__len()__这个魔术方法时候,就可以对你需要的进行计算了,这个需要积累
这里给个例子吧
class Dog:
def __init__(self, l):
self.l = []
self.l.extend(l)
def __len__(self):
return len(self.l) l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
d1 = Dog(l1)
print(len(d1))
魔术方法举例
异常处理:try - except语句
try:
【代码块A】 #可能会出错误的代码 异常检测
except Exception1[ as e]: #异常处理
【代码块1】 #异常处理代码
except Exception2[ as e]: #异常处理
【代码块2】 #异常处理代码
....
except Exceptionn[ as e]: #异常处理
【代码块n】 #异常处理代码
[else:] #可选,如果没有引发异常会执行
处理语句
[finally:] #无论如何都要执行的语句
处理语句
【后续语句】
异常处理
except匹配顺序从上到下
except语句书写要求:精确的类型往前放,模糊的,不精确的往后放
except不带任何类型,则匹配所有类型异常,应该放到最后,吞掉异常
可以将多种异常用元组的方式(异常类型1,异常类型2...异常类型n)书写,简化代码
except字句中e,是一个对象,打印它,会显示异常信息描述
try-except也可以捕获方法或函数中抛出的异常
所有异常类型都继承自BaseException,使用BaseException可以将异常一网打尽
finally字句中可以进行一些清理工作,比如关闭文件,数据库等工作
抛出异常:手动抛出一个异常,无论哪种异常都可以带一个参数字符串,如果没有带参数,则会把异常原样抛出
try:
raise ZeroDivisionError('除0错误')
# raise ZeroDivisionError #如果不想获取错误信息,可以不带参数
except ZeroDivisionError as e:
print(e) #除0错误
抛出异常
assert 断言:
asser 条件 [,异常描述字符串]
执行流程:如果条件为假,则抛出AssertionError,条件为真,就当assert不存在
作用:对于可能出问题的代码,加上断言,方便问题排查
print('start')
num = int(input('请输入一个1~9的整数:'))
assert 0 <num <9,'num不在1~9'
print('end')
assert断言
自定义异常:如果说系统异常类型已经无法满足自己,那么就可以写个自定义异常
自己定义的异常类必须继承BaseException或Exception
步骤:
在自定义异常类的构造函数中,调用父类构造函数
重写
__str__
方法输出异常信息编写异常处理方法处理异常
class CustomError(BaseException): #继承BaseException
def __init__(self,msg):
super().__init__() #调用父类初始化
self.msg = msg #重写__str__,输出异常信息
def __str__(self):
return self.msg #3.自定义异常处理方法
def handle_exception(self):
print('异常处理') try:
raise CustomError('自定义异常')
except CustomError as e:
print(e)
自定义异常
最新文章
- Leetcode-24 Swap Nodes in Pairs
- HTLM5表单
- Java学习笔记 04 类和对象
- Vijos1053 Easy sssp[spfa 负环]
- MVC-ActionResult解说
- mysql 中间件 分析
- HDU 5416 CRB and Tree
- ios 获取屏幕的属性
- 隐藏Console形式无效(继续1)
- AndroidTest工程的自定义gradle task
- CTF中怎看phpinfo
- app支付宝快速入门
- java复习笔记
- linux下单独线程启动
- fastadmin 使用记录
- 使用python脚本实现统计日志文件中的ip访问次数
- 如何去掉IE文本框后的那个X css代码
- 【LeetCode】287. Find the Duplicate Number
- 从Vue文件到Html文件
- [Android Pro] Swift 3.0多线程