Python构建自己的with语句

我们平时使用python文件io时通常都会使用with打开

with open("test.txt", "r") as f:
  print(f.read())

with as 实际上是用调用了对象中__enter__和__exit__方法

  • __enter__ 需要返回一个对象 通过as后面的变量来接受这个对象
  • __exit__ 这个方法是在with结束后执行的方法,比如数据库常用的close(),这个方法需要返回值,但是需要传入固定参数 exc_type, exc_val, exc_tb
     

自定义with as

class person():
    def __init__(self, name):
        self.name = name

    def __enter__(self):
        print(f"{self.name}今天出生了")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print(f"{self.name}离开了世界")

    def start(self):
        print("一百年过去了.....")


if __name__ == "__main__":
    with person("张三") as zs:
        zs.start()

输出结果

张三今天出生了
一百年过去了.....
张三离开了世界
posted @ 2021-10-28 14:01  冰块好冰  阅读(162)  评论(0)    收藏  举报