zoukankan      html  css  js  c++  java
  • 上下文管理器的重写以及算术运算对应的魔术方法

    一、上下文管理器

    概念:上下文管理器是一个Python对象,为操作提供了额外的上下文信息,这种额外的信息,在
    使用with语句初始化上下文,以及完成with 块中的所有代码是,采用可调用的形式。

    实现一个上下文管理器需要实现两个方法:
    1. object._enter_(self)

    输入与此对象相关的运行时上下文。如果存在的话,with语句将绑定该方法的返回值到该语句的as字句中指
    定的目标。

    2. object._exit_(self,exc_type,exc_val,exc_tb)

    exc_type:异常类型

    exc_val :异常值

    exc_tb :异常回溯追踪

    退出于此对象相关的运行时上下文。

    例子:
    class MyOpen:

      def __init__(self, name, method, encoding = "utf8"):
        self.name = name
        self.method = method
        self.encoding = encoding

      def __enter__(self,):
         self.f = open(self.name, self.method, encoding= self.encoding)
        return self.f

      def __exit__(self, exc_type, exc_val, exc_tb):
        return self.f.close()

      with MyOpen("222.txt","w") as f:
        f.write("你好")

    二 、算术运算符对应的魔术方法


    __add__(self, other) 加法

    __sub__(self, other) 减法

    __add__(self, other) 乘法


    __truediv__(self, other) 真除法
    __floordiv__(self, other) 整数除法
    __mod__(self, other) 取余运算

    例子:
    class Test:

      def __init__(self,data):
        self.data = data

      def __add__(self, other):
        return self.data + other.data

      def __mul__(self, other):
        return self.data * other.data


    a = Test(10)
    b = Test(20)
    print(a*b)

  • 相关阅读:
    网站如何做分布式(集群)的大纲
    [转]Bind和Eval的区别详解
    SQL 中游标的并发问题。
    如何利用客户端缓存对网站进行优化?
    Windows的第五种群集方案 CCS
    ICollection 接口的类序列化的问题。
    如何提高网页的效率(上篇)——提高网页效率的14条准则
    石油地质名称解释
    【SQL基础概念】
    DataView/DataRowView
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10909163.html
Copyright © 2011-2022 走看看