python析构函数用法及注意事项
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
主动删除对象调用del 对象;程序运行结束后,python也会自动进行删除其他的对象。
class Animal:
def __del__(self):
print("销毁对象{0}".format(self))
cat = Animal()
cat2 = Animal()
del cat2
print("程序结束")
如果重写子类的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析构函数的使用注意内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341