美文网首页
python 让对象支持上下文管理协议

python 让对象支持上下文管理协议

作者: 孙广宁 | 来源:发表于2022-05-27 23:48 被阅读0次
8.3 通过with语句出发,让对象支持上下文管理协议
  • 需要实现 enter 、exit 方法
>>> from socket import socket,AF_INET,SOCK_STREAM
>>> class LC:
...     def __init__(self,address,family=AF_INET,type=SOCK_STREAM):
...         self.address=address
...         self.family=AF_INET
...         self.type=SOCK_STREAM
...         self.sock=None
...     def __enter__(self):
...         if self.sock is not None:
...             raise RuntimeError("Already connected")
...         self.sock = sock(self.family,self.type)
...         self.sock.connect(self.address)
...         return self.sock
...     def __exit__(self,exc_ty,exc_val,tb):
...         self.sock.close()
...         self.sok = None
...
  • 这个类的核心功能就是建立一条网络连接,但是在初始状态下,并不会建立连接
  • 网络连接可以通过with语句来建立和close,示例如下
>>> from functools import partial
>>> con = LC("www.baidu.com",80)
>>> with con as s:
...     s.send(b'GET /index.html HTTP/1.0\r\n')
...     s.send(b'HOST: www.baidu.com\r\n')
...     s.send(b'\r\n')
...     resp = b''.join(iter(partial(s.recv,8192),b''))
...

相关文章

  • python 让对象支持上下文管理协议

    8.3 通过with语句出发,让对象支持上下文管理协议 需要实现 enter 、exit 方法 这个类的核心功能就...

  • python 让对象支持上下文管理协议

    8.3 通过with语句出发,让对象支持上下文管理协议 需要实现 enter 、exit 方法 这个类的核心功能就...

  • Python3 - 让对象支持上下文管理协议

    问题 让对象支持上下文管理协议,兼容with语句。 解决方案 为了让一个对象兼容 with 语句,需要实现 __e...

  • 让对象支持上下文管理协议

    问题 你想让你的对象支持上下文管理协议 (with 语句)。 解决方案 为了让一个对象兼容 with 语句,你需要...

  • Python上下文管理器

    上下文管理器 概念:实现了上下文协议的对象即为上下文管理器。 上下文管理器的协议: __enter__进入的方法_...

  • context manager

    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。...

  • 迭代器和生成器 (Iterator & Generator)

    迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和n...

  • python上下文管理器(context manager)

    首先,什么是上下文管理器?上下文管理器就是实现了上下文管理协议的对象。主要用于保存和恢复各种全局状态,关闭文件等,...

  • python中上下文管理器

    什么是上下文管理器? 代码的环境就是上下文,实现了上下文管理器协议的类产生的实例就是上下文管理器对象。在类中声名e...

  • 2021-02-08

    1.上下文管理协议与上下文管理器的基础概念 上下文管理协议(Context Management Protocol...

网友评论

      本文标题:python 让对象支持上下文管理协议

      本文链接:https://www.haomeiwen.com/subject/uyobprtx.html