🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## `__del__()`方法 创建对象后,python解释器默认调用`__init__()`方法; 当删除对象时,python解释器也会默认调用一个方法,这个方法为`__del__()`方法 ~~~ class Car(object): """定义了一个车类,可以启动和炸街""" def __init__(self, name, max_speed, vehicle_length): """ __init__() 方法,用来做变量初始化 或 赋值 操作""" self.name = name # 车名 self.max_speed = max_speed # 最高时速 self.vehicle_length = vehicle_length # 车长 def start(self): """实例方法""" print("正在启动") def fried_street(self): """实例方法""" print("开始炸街") def info(self): """在类的实例方法中,通过self获取该对象的属性""" print("本车名为:{} 最高时速:{} km/h".format(self.name, self.max_speed)) print("本车名为:{} 车长:{} mm".format(self.name, self.vehicle_length)) def __del__(self): print('__del__方法被调用了') print('{} 被干掉了'.format(self.name)) # 创建对象 mini_car = Car('宝马mini', 1000, 2000) # 删除对象 print("{}被删除1次".format(id(mini_car))) del (mini_car) print('-' * 30) # 创建对象 alto_car = Car('奥拓', 2000, 3000) alto_car1 = alto_car alto_car2 = alto_car print("{}被删除1次".format( id(alto_car))) del(alto_car) print("{}被删除1次""".format(id(alto_car1))) del(alto_car1) print("{}被删除1次""".format(id(alto_car2))) del(alto_car2) ~~~ #### 总结 * 当有变量保存了一个对象的引用时,此对象的引用计数就会加1; * 当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。