一:析构方法__del__():
1 ''' 2 当对象在内存中被释放时,自动触发执行 3 不过一般不用我们释放,Python 解释器会自动释放 4 ''' 5 class DemoClass: 6 7 def __init__(self,name): 8 self.name = name 9 10 def __del__(self): 11 print("析构了") 12 13 14 if __name__ == "__main__": 15 demo = DemoClass("tom") 16 del demo 17 18 print("=============") 19 ''' 20 输出: 21 析构了 22 ============= 23 24 '''
二:"对象()" 调用的方法:__call__()
1 class DemoClass: 2 3 def __call__(self, *args, **kwargs): 4 print("I am here") 5 6 7 8 if __name__ == "__main__": 9 demo = DemoClass() 10 11 demo() 12 ''' 13 构造方法的执行是由创建对象触发的,即 对象 = 类名(); 14 而对于__call__()方法的执行时 由对象后加括号 即:对象()或类名()() 15 16 我们知道类本身也是个类对象,所以它加括号就是调用产生它的类(元类)的__call__() , 17 它的__call__()方法返回个实例,所以叫实例化 18 '''
输出:
I am here