首页 python基础教程 Python面向对象-内置方法__new__()和__del__()查看对象生命周期
pay pay
教程目录

Python面向对象-内置方法__new__()和__del__()查看对象生命周期

日期: 二月 14, 2023, 12:01 a.m.
栏目: python基础教程
阅读: 442
作者: Python自学网-村长

摘要: 一个对象从创建到释放,这期间执行了那些操作,在python中的对象是如何被创建,又是什么时候在内存中被释放的其实都已经被设计好了,我们可以通过__init__()和__del__()方法进行验证。

一个对象从创建到释放,这期间执行了那些操作,在python中的对象是如何被创建,又是什么时候在内存中被释放的其实都已经被设计好了,我们可以通过__new__()和__del__()方法进行验证。

class Cat:

    def __init__(self):  # 创建对象的时候执行这个方法,初始化方法为实例添加默认属性
        print('初始化方法')
        self.age = 19

    def __del__(self):  # 对象释放的时候调用这个方法,当对象被del删除时会自动调用这个方法
        print('对象被释放了')
    pass


c = Cat()
print(c)

返回结果:

初始化方法
<__main__.Cat object at 0x000000000217B460>
对象被释放了

从上面的结果可以看出来,输出对象之前调用初始化方法,结束之后使用del方法释放对象,再看看下面一段代码。

class Cat:
    def __new__(cls, *args, **kwargs):  # 对象创建之前就执行这个方法,拦截对象创建
        print('拦截对象创建')

    def __init__(self):  # 创建对象的时候执行这个方法,初始化方法为实例添加默认属性
        print('初始化方法')
        self.age = 19

    def __del__(self):  # 对象释放的时候调用这个方法,当对象被del删除时会自动调用这个方法
        print('对象被释放了')
    pass


c = Cat()
print(c)

返回结果:

拦截对象创建
None

通过给对象加一个__new__()方法之后发现对象根本没有被创建,这是因为在对象创建之前就执行这个方法,拦截对象创建。所以一个对象的创建首先要执行__new__()方法,生命周期结束后执行__del__()方法,这就是一个对象的完整生命周期。

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部