网络编程
位置:首页>> 网络编程>> Python编程>> python析构函数用法及注意事项

python析构函数用法及注意事项

作者:小妮浅浅  发布时间:2023-01-25 19:53:11 

标签: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

来源:https://www.py.cn/jishu/jichu/31132.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com