How to use __del__ method in fMBT

Best Python code snippet using fMBT_python

ClassDel.py

Source:ClassDel.py Github

copy

Full Screen

1# Python __del__方法:销毁对象2#3# 与 __init__() 方法对应的是 __del__() 方法,__init__() 方法用于初始化 Python 对象,而 __del__() 则用于销毁 Python 对象,即在任何 Python 对4# 象将要被系统回收之时,系统都会自动调用该对象的 __del__() 方法。5#6# 当程序不再需要一个 Python 对象时,系统必须把该对象所占用的内存空间释放出来,这个过程被称为垃圾回收(GC,Garbage Collector),Python 会自动回收7# 所有对象所占用的内存空间,因此开发者无须关心对象垃圾回收的过程。8#9# Python 采用自动引用计数(ARC)方式来回收对象所占用的空间,当程序中有一个变量引用该 Python 对象时,Python 会自动保证该对象引用计数为 1;当程序中10# 有两个变量引用该 Python 对象时,Python 会自动保证该对象引用计数为 2,依此类推,如果一个对象的引用计数变成了 0,则说明程序中不再有变量引用该对象,11# 表明程序不再需要该对象,因此 Python 就会回收该对象。12#13# 大部分时候,Python 的 ARC 都能准确、高效地回收系统中的每个对象。但如果系统中出现循环引用的情况,比如对象 a 持有一个实例变量引用对象 b,而对象 b 又14# 持有一个实例变量引用对象 a,此时两个对象的引用计数都是 1,而实际上程序已经不再有变量引用它们,系统应该回收它们,此时 Python 的垃圾回收器就可能没那么15# 快,要等专门的循环垃圾回收器(Cyclic Garbage Collector)来检测并回收这种引用循环。16#17# 当一个对象被垃圾回收时,Python 就会自动调用该对象的 __del__ 方法。需要说明的是,不要以为对一个变量执行 del 操作,该变量所引用的对象就会被回收,只有18# 当对象的引用计数变成 0 时,该对象才会被回收。因此,如果一个对象有多个变量引用它,那么 del 其中一个变量是不会回收该对象的。19class Item:20 def __init__(self, name, price):21 self.name = name22 self.price = price23 # 定义析构函数24 def __del__(self):25 print('del删除对象')26# 创建一个Item对象,将之赋给im变量27im = Item('鼠标', 29.8)28x = im # ①29# 打印im所引用的Item对象30del im31print('--------------')32# 程序中重写了 Item 类的 __del__() 方法,该方法就是 Item 类的析构函数,当系统将要回收 Item 时,系统会自动调用 Item 对象的 __del__() 方法。33#34# 上面程序先创建了一个 Item 对象,并将该对象赋值给 im 变量,① 号代码又将 im 赋值给变量 x,这样程序中有两个变量引用 Item 对象,接下来程序执行35# del im 代码删除 im 对象,此时由于还有变量引用该 Item 对象,因此程序并不会回收 Item 对象。36#...

Full Screen

Full Screen

19_在O(1)时间内删除链表结点.py

Source:19_在O(1)时间内删除链表结点.py Github

copy

Full Screen

...4class ListNode(object):5 def __init__(self, x=None):6 self.data=x7 self.next=None 8 def __del__(self):9 self.data=None10 self.next=None11class Solution(object):12 def DeleteNode(self, pListHead, pToBeDeleted):13 r"""14 Args:15 pListHead:链表的头结点16 pToBeDeleted:待删除的节点17 """18 if not pListHead or not pToBeDeleted:19 return None 20 if pToBeDeleted.next!= None: # 多个节点,删除的是中间结点21 pNext=pToBeDeleted.next 22 pToBeDeleted.data=pNext.data23 pToBeDeleted.next=pNext.next24 pNext.__del__()25 elif pListHead==pToBeDeleted: # 唯一的一个节点,要删除26 pToBeDeleted.__del__()27 pListHead.__del__()28 else: # 删除的是尾结点29 pNode=pListHead30 while pNode.next!=pToBeDeleted:31 pNode=pNode.next 32 pNode.next=None 33 pToBeDeleted.__del__()34 def DeletedNode1(self, pListHead, pToBeDeleted):35 if not pListHead and not pToBeDeleted:36 return 37 if pToBeDeleted.next!=None:38 pNext=pToBeDeleted.next39 pToBeDeleted.next=pNext.next40 pToBeDeleted.data=pNext.data41 pNext.__del__()42 elif pToBeDeleted==pListHead:43 pToBeDeleted.__del__()44 pListHead.__del__()45 else:46 pNode=pListHead47 while pNode.next!=pToBeDeleted:48 pNode=pNode.next49 pNode=None 50 pToBeDeleted.__del__()51 def DeletedNode2(self, pListHead, pToBeDeleted):52 if not pListHead and not pToBeDeleted:53 return 54 if pToBeDeleted.next!=None:55 pNext=pToBeDeleted.next56 pToBeDeleted.next=pNext.next57 pToBeDeleted.data=pNext.data58 pNext.__del__()59 elif pListHead==pToBeDeleted:60 pListHead.__del__()61 pToBeDeleted.__del__()62 else:63 pNode=pListHead 64 while pNode.next!=pToBeDeleted:65 pNode=pNode.next66 pNode=None 67 pToBeDeleted.__del__()68node1 = ListNode(10)69node2 = ListNode(11)70node3 = ListNode(13)71node4 = ListNode(15)72node1.next = node273node2.next = node374node3.next = node475S = Solution()76S.DeletedNode2(node1, node3)77print(node3.data)78S.DeletedNode2(node1, node3)79print(node3.data)80print(node2.data)81S.DeletedNode2(node1, node1)...

Full Screen

Full Screen

SuperclassDelCalledMultipleTimes2.py

Source:SuperclassDelCalledMultipleTimes2.py Github

copy

Full Screen

1#Calling a method multiple times by using explicit calls when a base uses super()2class Vehicle(object):3 4 def __del__(self):5 recycle(self.base_parts)6 super(Vehicle, self).__del__()7 8class Car(Vehicle):9 10 def __del__(self):11 recycle(self.car_parts)12 super(Car, self).__del__()13 14 15class SportsCar(Car, Vehicle):16 17 # Vehicle.__del__ will get called twice18 def __del__(self):19 recycle(self.sports_car_parts)20 Car.__del__(self)21 Vehicle.__del__(self)22 23 24#Fix SportsCar by using super()25class FixedSportsCar(Car, Vehicle):26 27 def __del__(self):28 recycle(self.sports_car_parts)29 super(SportsCar, self).__del__()...

Full Screen

Full Screen

multiple_del.py

Source:multiple_del.py Github

copy

Full Screen

1#Calling a method multiple times by using explicit calls when a base uses super()2class Base(object):3 def __del__(self):4 pass5class Y1(Base):6 def __del__(self):7 super(Y1, self).__del__()8class Y2(Base):9 def __del__(self):10 super(Y2, self).__del__() #When `type(self) == Y3` this calls `Y1.__del__`11class Y3(Y2, Y1):12 def __del__(self):13 Y1.__del__(self)14 Y2.__del__(self)15#Calling a method multiple times by using explicit calls when a base inherits from other base16class Z1(object):17 def __del__(self):18 pass19class Z2(Z1):20 def __del__(self):21 Z1.__del__(self)22class Z3(Z2, Z1):23 def __del__(self):24 Z1.__del__(self)...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run fMBT automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful