Python面试题--第53道题目--如何将with语句用于一个自定义的类--2022年04月08日

Python面试题--第53道题目--如何将with语句用于一个自定义的类--2022年04月08日,第1张

目录


一、with语句的作用:


二、将with语句用于自定义的类:



一、with语句的作用:

1、适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”工作。


2、释放资源:文件使用之后关闭、线程中的锁自动获取、释放。



二、将with语句用于自定义的类:

# 引入魔法函数:__enter__   __exit__
class Myclass:
    def __enter__(self):
        print('__enter__ is call!')
        return self
    def process1(self):
        print('process1')
    def process2(self):
        a = 1/0
        print('process2')
    def __exit__(self,exc_type,exc_value,traceback):
        print('__exit__ is call!')
        print(f'type:{exc_type}')
        print(f'value:{exc_value}')
        print(f'trace:{traceback}')

如果是直接调用自定义的类,必然会报错。


mm = Myclass()
mm.process2()
# ZeroDivisionError: division by zero

如果使用with语句调用自定义的类:

with Myclass() as mc:
    mc.process1()
    mc.process2()

会有如下的提示信息:

"""
__enter__ is call!
process1
__exit__ is call!
type:
value:division by zero
trace:
"""

无论执行过程中是否异常抛出,都会继续执行下面的程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存