python - 面向对象- __del__生命周期

del:对象被从内存中销毁前,会被自动调用

在python中
当使用类名()创建对象时,为对象分配完空间后,自动调用__init__方法
当一个对象被从内存中销毁前(把这个对象从内存中删除掉),
会自动调用__del__方法

应用场景
__init__改造初始化方法,可以让创建对象更加灵活
__del__如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__方法

生命周期(出生到死亡)
一个对象从调用类名()创建,生命周期开始
一个对象的__del__方法一但被调用,生命周期结束
在对象的生命周期内,可以访问对象属性,或者让对象调用方法

class Cat:
    def __init__(self,new_name):
        self.name = new_name
        print('%s 来了' %(self.name))
    def __del__(self):
        print('%s 走了' %(self.name))

cat = Cat('tom')
print(cat.name)

输出:

tom 来了
tom	
tom 走了 #对象被从内存中销毁前,会被自动调用

如果给代码加上print(’*’*50) __del__方法依旧在程序运行结束运行。

class Cat:
    def __init__(self,new_name):
        self.name = new_name
        print('%s 来了' %(self.name))
    def __del__(self):
        print('%s 走了' %(self.name))

cat = Cat('tom')
print(cat.name)
print('*' * 50)

输出:

tom 来了
tom
**************************************************
tom 走了

另外,
del关键字可以删除一个对象,del关键字自己调用__del__方法

class Cat:
    def __init__(self,new_name):
        self.name = new_name
        print('%s 来了' %(self.name))
    def __del__(self):
        print('%s 走了' %(self.name))

cat = Cat('tom')
print(cat.name)
# del关键字可以删除一个对象,del关键字自己调用__del__方法
del cat
print('*' * 50)

输出:

tom 来了
tom
tom 走了
**************************************************

猜你喜欢

转载自blog.csdn.net/weixin_43067754/article/details/85269538
今日推荐