with open('path', 'r' ,encoding='utf-8') as f:

  代码块

上述就叫做上线文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法。

上下文管理协议:

  class Open:

    def __init__(self,name):

      self.name=name

    def __enter__(self):

      print('出现with语句 ,对象的__enter__被触发,有返回值则赋值给as声明的变量')

      #return self

    def __exit__(self,exc_type,exc_val,exc_tb):

     print('重要代码块执行完后,在执行我!')

exc_type:  异常类型

,exc_val: 异常值

,exc_tb: 追溯类型

     

python 面向对象编程 之 上下文管理协议的更多相关文章

  1. Python之面向对象上下文管理协议

    Python之面向对象上下文管理协议 析构函数: import time class Open: def __init__(self,filepath,mode='r',encode='utf-8') ...

  2. python - 上下文管理协议(with + __enter__ + __exit__)

    上下文管理协议: with + __enter__ + __exit__ #上下问管理协议: #with + __enter__ + __exit__ class Test(): def __init ...

  3. Python上下文管理协议:__enter__和__exit__

    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语 ...

  4. python 描述符 上下文管理协议 类装饰器 property metaclass

    1.描述符 #!/usr/bin/python env # coding=utf-8 # 数据描述符__get__ __set__ __delete__ ''' 描述符总结 描述符是可以实现大部分py ...

  5. python基础----实现上下文管理协议__enter__和__exit__

    我们知道在操作文件对象的时候可以这么写 with open('a.txt') as f: '代码块' 上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明_ ...

  6. Python 上下文管理协议中的__enter__和__exit__基本理解

    所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_va ...

  7. 用python优雅打开文件及上下文管理协议

    有次面试被问到如何优雅地打开一个文件?   那就是用with语句,调用过后可以自动关闭.   但是为什么使用with语句就可以自动关闭呢,原因就是上下文管理协议.   上下文管理协议:包含方法 __e ...

  8. Python概念-上下文管理协议中的__enter__和__exit__

    所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_va ...

  9. python上下文管理协议

    所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_va ...

随机推荐

  1. python基础学习Day14 内置函数 匿名函数

    一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...

  2. css3选择器补充

    一.关系选择器 1.E+F   (E元素下一个满足条件的兄弟元素节点) <style> div + p{ background-color:red;// 第一个p元素变色 } </s ...

  3. yii基础控制器安全验证

  4. 大数据_Kafka_Kafka自动创建不存在的Topics / 删除已存在的Topics

    大数据_Kafka_Kafka自动创建不存在的Topics / 删除已存在的Topics 2016年10月11日 18:22:59 高达一号 阅读数:8655   版权声明:本文为博主原创文章,未经博 ...

  5. mysql limit语句

    [mysql limit语句] 代码: SELECT * FROM table LIMIT 2 OFFSET 1; 比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取. ...

  6. @JsonInclude(JsonInclude.Include.NON_NULL) 加在对象上

    @JsonInclude(JsonInclude.Include.NON_NULL) public class ViewWorkermessage implements Serializable { ...

  7. NO_DATA_FOUND ORACL NVL函数,当第一个为空时显示第二个参数值

    ORA-01403: no data foundORA-06512: at "STG.SAP_SO_QM_CUSTOMER_ADDBOM", line 50 NVL函数的格式如下: ...

  8. SQLMAP自动注入(一):sqlmap的简单使用和配合burpsuite使用

    python编写,开源 检测方式 基于布尔的盲注检测 基于时间的盲注检测 基于错误的检测 基于union的检测 基于堆叠的检测 优点 数据库直连 -d cookie过期后自动更新cookie信息 可以 ...

  9. EVIL TWIN AP

    git clone https://github.com/P0cL4bs/3vilTwinAttacker.git cd 3vilTwinAttacker/ ./installer.sh --inst ...

  10. AdminLTE 侧边栏收缩时触发的事件

    点击此处,会触发 expanded.pushMenu 或 collapsed.pushMenu 事件 如果需要在事件触发时编写相关逻辑,可用如下方式 $("body").on(&q ...