美文网首页
对 python 类声明周期的理解

对 python 类声明周期的理解

作者: 天空蓝雨 | 来源:发表于2020-09-10 09:20 被阅读0次

先来个简单的例子:

class xx():
    def __new__(cls, *args, **kwargs):
        print("实例穿件")
        return super(xx, cls).__new__(cls, *args, **kwargs)
        
    def __init__(self, *args, **kwargs):
        print("实例初始化")
    
    
    def __del__(self, *args):
        print("实例被删除了")
        
a = xx()
实例穿件
实例初始化
del a
实例被删除了

注意:上面是在 jupyter 里面测试的,所以需要手动 del a ,实例才会被删除的。
另一种情况,就是 在 ide 中,如下图:


ide 文件运行后,会自动回收实例的 a, 那实例没有引用也就自然被删除了 直接执行实例,但是没有被引用,那就立刻被删除了

从这点就看出来了,实例的声明周期遵守 python 引用计数和 隔代回收的原则的。
参考理解:
https://segmentfault.com/q/1010000015687362
其实我们可以通过实例的 id ,来使用他,前提是,这个实例还没有会回收

id = id(xx对象)
_ctypes.PyObj_FromPtr(id)  # 拿到 id 对应的对象

所以,如果缓存session 存不了 实例(因为无法序列化),也许可以考虑使用 保存实例的id(数字喽)。(嘿嘿,可以试试)

總結,儅實力沒有被回收的時候,是可以通過id 來獲取到的,

如果實力不存在的話,調用會返回一個錯誤的狀態嗎, 而不通常的 0,并且不可以使用這個實力了。

相关文章

  • 对 python 类声明周期的理解

    先来个简单的例子: 注意:上面是在 jupyter 里面测试的,所以需要手动 del a ,实例才会被删除的。另一...

  • metaclass初探

    要理解python中的元类的概念,首先要清楚类的概念。首先,python中类是对象,当用class关键字声明的时候...

  • 从jvm角度看懂类初始化、方法重载、重写。

    类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期。如下图 类的声明周期可以分为7个阶段,但今天我们只...

  • java编程——从jvm角度看懂类初始化、方法重写、重载

    类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期。如下图 类的声明周期可以分为7个阶段,但今天我们只...

  • iOS App生命周期

    iOS App的生命周期 增加自己对iOS声明周期理解,转载自,Apple App Cycle 一个项目默认会有一...

  • 对python中元类的理解

    1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:...

  • 03_类的声明

    类的声明: class 类名(父类):属性方法 class:python 中声明类的关键字类名:标识符,类名的首字...

  • 三、MyBatis基本要素—核心对象

    一、本课目标 了解MyBatis的三个基本要素 理解核心类和接口的作用域和声明周期(重点、难点) 掌握SQLSes...

  • 【面向对象】Python面向对象之多继承算法

    Python的多继承类的声明如下: Python的类分为经典类和新式类: 经典类:默认是没有继承任何基类的类,2....

  • day14 类和对象

      几天主要学习了python中的类与对象的基础知识。   一、类的声明   类:对拥有相同功能(方法)和相同属性...

网友评论

      本文标题:对 python 类声明周期的理解

      本文链接:https://www.haomeiwen.com/subject/fuckohtx.html