美文网首页
Python基础29-面向对象(生命周期)

Python基础29-面向对象(生命周期)

作者: Jacob_LJ | 来源:发表于2018-05-24 21:58 被阅读57次

Python基础-面向对象(生命周期)

1 生命周期

  1. 指的是一个对象, 从诞生到消亡的过程
  2. 当一个对象被创建时, 会在内存中分配相应的内存空间进行存储
  3. 当这个对象不再使用, 为了节约内存, 就会把这个对象释放

生命周期所涉及的问题
1. 如何监听一个对象的生命过程?
2. Python是如何掌控一个对象的生命?

2 监听对象生命周期

  1. __new__方法
* 当我们创建一个对象时, 用于给这个对象分配内存的方法
* 通过拦截这个方法, 可以修改对象的创建过程
* 比如:单例设计模式
  1. __init__方法
* 每个对象实例化的时候,都会自动执行这个方法
* 可以在这个方法里面,初始化一些实例属性
  1. __del__方法
* 当对象被释放的时候调用这个方法,如执行`del 实例`,同样会调用该方法
* 可在这个方法中清理资源

3 监听对象生命周期方法

class Person:
    # def __new__(cls, *args, **kwargs):
    #     print("新建了一个对象, 但是, 被我拦截了")
    def __init__(self):
        print("初始化方法")
        self.name = "fkm"

    def __del__(self):
        print("这个对象被释放了")
    pass

p = Person()
# del p
print(p)
print(p.name)

>>>> 打印结果

初始化方法
<__main__.Person object at 0x10109f5c0>
fkm
这个对象被释放了

4 监听对象生命周期的方法-案例

class Person:
    __personCount = 0
    def __init__(self):
        print("计数 + 1")
        Person.__personCount += 1

    def __del__(self):
        print("计数 - 1")
        self.__class__.__personCount -= 1

    @classmethod
    def log(cls):
        print("当前的人的个数是%d个" % cls.__personCount)

p = Person()
p2 = Person()
Person.log()
del p
del p2
Person.log()

>>>> 打印结果

计数 + 1
计数 + 1
当前的人的个数是2个
计数 - 1
计数 - 1
当前的人的个数是0个

Question

  1. 什么叫对象的生命周期?
  2. 对象的生命周期主要包括那几个阶段?
  3. 代码练习:监听对象的生命周期的过程;

相关文章

  • Python基础29-面向对象(生命周期)

    1 生命周期 指的是一个对象, 从诞生到消亡的过程 当一个对象被创建时, 会在内存中分配相应的内存空间进行存储 当...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • 001-python知识

    Python基础 一、Python的基本概念 (一)面向对象 Python是一门面向对象的语言,像C语言和GO语言...

  • Python面向对象(基础)

    面向对象 Python是支持面向对象的,面向对象编程是一种程序设计思想。 类和实例(基础) 面向对象最重要的就是类...

  • 【知识详解】JAVA基础(秋招总结)

    JAVA基础 目录 JAVA基础 问:面向过程(POP)和面向对象(OOP)? 问:Python和Java的区别?...

  • 面向Python,面向对象(基础)!

    简单、易学、免费、开源、高层语言、可移植性、解释性、面向对象、可拓展性、丰富的库、规范的代码等。 缺点: 运行速度...

  • Python 入门笔记

    1.Linux基础 2.Python基础 3.Python面向对象 4.项目实战 励志公式 1.01365=...

  • 黑马上海37期Python全套视频课程

    python基础班 1-1 Linux基础 1-2 python基础 1-3 面向对象 1-4 项目飞机大...

网友评论

      本文标题:Python基础29-面向对象(生命周期)

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