"""
析构方法:
释放内存,做释放内存前的准备工作
触发机制:析构方法会在对象被销毁时自动触发
作用:关闭一些开发的资源
注意:是对象被销毁时触发了这个方法,而不是这个方法销毁了对象
对象会在哪些情况下被销毁?
1.当程序执行完毕,内存中的所有资源都会被销毁释放
2.使用del 删除时
3.对象不再被引用时,会自动销毁
创建实例对象时自动被调用:
__new__:创建实例对象
Animal monkey = new Animal()
__init__:初始化数据属性
__del__:析构方法
"""
class Animal:
"""初始化数据属性的方法"""
def __init__(self,gender,kinds,legs):
print("初始化方法被调用")
self.gender = gender
self.kinds = kinds
self.legs = legs
def eat(self):
print(f"{self.kinds}eating...")
def __del__(self):
print("析构方法被调用")
monkey = Animal("wukongSun","猴赛类",4)
monkey.eat()
#3.对象不再被引用时,会自动销毁
Animal("haha","gg",6)
print("析构方法被调用,,,,")
"""
open().close()
通过open().close(),释放open函数的内存
"""
class Open:
def __init__(self,filePath,mode="r",encode="utf-8"):
self.file = open(filePath,mode=mode,encoding=encode)
def write(self):
temp = input("请输入:")
self.file.write(temp)
def __del__(self):
print("文件流即将关闭,析构方法被调用")
self.file.close()
#创建了一个实例对象(文件流file)
file = Open("a.txt","w")
file.write()
class Car:
def __init__(self,brand):
self.brand = brand
print(f"{self.brand}被创建")
def __del__(self):
print(f"{self.brand}被销毁")
#1.实例化后调用和销毁的顺序
# baoma = Car("宝马")
# lanbojini = Car("兰博基尼")
# falali = Car("法拉利")
"""
宝马被创建
兰博基尼被创建
法拉利被创建
宝马被销毁
兰博基尼被销毁
法拉利被销毁
"""
#1.实例化后没有被调用和销毁的顺序
Car("宝马")
Car("兰博基尼")
Car("法拉利")
"""
宝马被创建
宝马被销毁
兰博基尼被创建
兰博基尼被销毁
法拉利被创建
法拉利被销毁
"""