# ### __del__ 析构方法 __init__ 构造方法 ''' 触发时机:当对象被内存回收的时候自动触发[1.页面执行完毕回收所有变量 2.所有对象被del的时候] 功能:对象使用完毕后资源回收 参数:一个self接受对象 返回值:无 ''' class LangDog(): def __init__(self,name): self.name = name def eat(self,something): print("可爱的小狼{},喜欢吃{}".format(self.name,something)) def __del__(self): print("__del__方法被触发") # (1) 1.页面执行完毕回收所有变量 obj = LangDog("詹姆斯·狗蛋") obj.eat("屎") print("<===>") # (2) 2.所有对象被del的时候 ''' 只有当所有指向该对象的变量都删除的时候,才算真正的删除该对象 ''' obj2 = obj print("<==start===>") del obj del obj2 print("<==end===>") # (3) 用类来模拟文件写的操作 # fp = open("ceshi111.txt",mode="w",encoding="utf-8") # fp.write("sfdsdf") # fp.close() # fp = open("ceshi111.txt",mode="r",encoding="utf-8") # res = fp.read() # fp.close() # print(res) print("<=111==>") import os class MyFile(): # 判断是否创建MyFile该对象 def __new__(cls,filename): if os.path.exists(filename): return object.__new__(cls) return print("该文件不存在") # 产生文件对象 def __init__(self,filename): self.fp = open(filename,mode="r",encoding="utf-8") # 读取文件 def readfile(self): res = self.fp.read() return res def __del__(self): print(0) # 自动触发__del__ ,帮助我们关闭文件 self.fp.close() obj = MyFile("ceshi222.txt") res = obj.readfile() print(res)