1.概念:生命周期:指的是,一个对象,从诞生到消亡的过程。当一个对象被创建时。会在内存中分配相应的内存空间进行储存。当这个对象不在使用了,为了节约内存,就会把这个对象释放了。
2.涉及问题:
2.1如何监听一个对象的生命过程:
2.2python是如何掌控一个对象的生命的
3.监听对象生命周期:
__new__方法:当我们创建一个对象时,用于给这个对象分配内存的方法。通过拦截这个方法,可以修改对象的创建过程。比如:单例设计模式。
class Person: def __new__(cls, *args, **kwargs): print("新建了一个对象,但是被我拦截了") pass p = Person() print(p)
__init__方法:当一个对象被创建好之后,可以附加一些额外的信息。
class Person: # def __new__(cls, *args, **kwargs): # print("新建了一个对象,但是被我拦截了") def __init__(self): print("初始化方法") self.name = "fj" pass p = Person() print(p) print(p.__dict__)
__del__方法:
class Person: # def __new__(cls, *args, **kwargs): # print("新建了一个对象,但是被我拦截了") def __init__(self): print("初始化方法") self.name = "fj" def __del__(self): print("这个对象已经被释放了") pass p = Person() del p print(p) print(p.__dict__)
4.生命周期案例:
# ----------------------------------------------------生命周期小案例---------------------------------------------------- # Person打印一下,当前这个时刻,由Person类,产生的实例,由多少个。 # 创建了一个实例,计数+1,删除了一个实例,计数-1. class Person: __personCount = 0 def __init__(self): print("计数+1") Person.__personCount += 1 def __del__(self): print("计数-1") Person.__personCount -= 1 @classmethod def log(cls): print("当前的人的个数%d个" % Person.__personCount) p = Person() p1 = Person() p2 = Person() p3 = Person() p4 = Person() p5 = Person() p6 = Person() Person.log() del p del p3 del p4 del p5 Person.log()