python析构函数用法及注意事项
1、主动删除对象调用del 对象;程序运行结束后,python也会自动进行删除其他的对象。
class Animal: def __del__(self): print("销毁对象{0}".format(self)) cat = Animal() cat2 = Animal() del cat2 print("程序结束")
2、如果重写子类的del方法,则必须显式调用父类的del方法,这样才能保证在回收子类对象时,其占用的资源(可能包含继承自父类的部分资源)能被彻底释放。
class Animal: def __del__(self): print("调用父类 __del__() 方法") class Bird(Animal): def __del__(self): # super(Bird,self).__del__() #方法1:显示调用父类的del方法 print("调用子类 __del__() 方法") cat = Bird() #del cat #只能调用子类里面的__del__ #super(Bird,cat).__del__() #方法2:显示调用父类的__del__
函数实例扩展:
#coding=utf-8 ''' 魔法方法,被__双下划线所包围 在适当的时候自动被调用 ''' #构造init、析构del class Rectangle: def __init__(self,x,y): self.x = x self.y = y print('构造') ''' del析构函数,并不是在del a对象的时候就会调用该析构函数 只有当该对象的引用计数为0时才会调用析构函数,回收资源 析构函数被python的垃圾回收器销毁的时候调用。当某一个对象没有被引用时,垃圾回收器自动回收资源,调用析构函数 ''' def __del__(self): print('析构') def getPeri(self): return (self.x + self.y)*2 def getArea(self): return self.x * self.y if __name__ == '__main__': rect = Rectangle(3,4) # a = rect.getArea() # b = rect.getPeri() # print(a,b) rect1 = rect del rect1 # del rect while 1: pass
到此这篇关于python析构函数用法及注意事项的文章就介绍到这了,更多相关python析构函数的使用注意内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!
【文章来源:新加坡服务 欢迎留下您的宝贵建议】