让对象支持上下文管理协议-python cookbook(第3版)高清中文完整版

时间:2024-06-29 23:06:18
【文件属性】:

文件名称:让对象支持上下文管理协议-python cookbook(第3版)高清中文完整版

文件大小:4.84MB

文件格式:PDF

更新时间:2024-06-29 23:06:18

python cookbook 第3版 高清 中文完整版

8.3 让对象支持上下文管理协议 问题 你想让你的对象支持上下文管理协议(with语句)。 解决方案 为了让一个对象兼容 with 语句,你需要实现 __enter__() 和 __exit__() 方法。 例如, 考虑如下的一个类,它能为我们创建一个网络连接: from socket import socket, AF_INET, SOCK_STREAM class LazyConnection: def __init__(self, address, family=AF_INET, type=SOCK_STREAM): self.address = address self.family = family self.type = type self.sock = None def __enter__(self): if self.sock is not None: raise RuntimeError('Already connected') self.sock = socket(self.family, self.type) self.sock.connect(self.address) return self.sock def __exit__(self, exc_ty, exc_val, tb): self.sock.close() self.sock = None


网友评论