第一个问题,什么叫生命周期?
生命周期就是一个对象从产生到消亡的一个周期过程,总体来说是一个这样的

展示一下生命周期的一点点的小案例吧~
1、利用全局变量
#以下是一个python展示生命周期的方法过程
personCount = 0
class Person:
    def __init__(self):
        global personCount
        print('计数 + 1')
        personCount += 1
    def __del__(self):
        global personCount
        print('计数 - 1')
        personCount -= 1
    pass
p = Person()
p2 = Person()
print('当前的人的个数是%d'%personCount)
del p
print('当前的人的个数是%d'%personCount)优点:这玩意确实能够计数
缺点:你再改一下,这个personCount会变,所以决定进行改变啦~~
 
2、第一个改变,就是把最后冗长的那个print放到函数的封装里面去!
personCount = 0
class Person:
    def __init__(self):
        global personCount
        print('计数 + 1')
        personCount += 1
    def __del__(self):
        global personCount
        print('计数 - 1')
        personCount -= 1
    def log(self):
        print('当前的人的个数是%d' % personCount)
        return personCount
p = Person()
# print(p.log())
print(p.log())
p.log() 有很多细节点值得注意:
有很多细节点值得注意:
 
1)最后调用了p.log()为啥会显示计数-1,哪里触发了del方法?
在这段代码中,当对象 p 调用 log() 方法时,会先打印当前的人的个数,然后返回 personCount。在调用 log() 方法时,personCount 的值为 1,所以会打印出 "当前的人的个数是1"。然后,由于没有其他引用指向对象 p,当 log() 方法执行完毕后,p 对象会被当作垃圾进行回收,从而触发 __del__() 方法,打印出 "计数 - 1"。
2)p.log()和print(p.log())有啥区别?
-  p.log()是调用对象p的log()方法,它可能会执行一些操作并返回一个值。如果log()方法有返回值,那么p.log()将返回这个值。 
-  print(p.log())是将p.log()的返回值作为参数传递给print()函数,然后将其打印出来。print()函数会将传入的参数转换为字符串并打印出来。 
总结起来,p.log()返回log()方法的返回值,而print(p.log())将log()方法的返回值打印出来。
3、运用静态方法去写一下这个案例
class Person:
    personCount = 0
    def __init__(self):
        print('计数 + 1')
        Person.personCount += 1
    def __del__(self):
        print('计数 - 1')
        Person.personCount -= 1
    @staticmethod
    def log():
        print('当前的人的个数是%d' % Person.personCount)
        return Person.personCount
p = Person()
p2 = Person()
Person.log()静态方法就是不用传入参数,大概是这样的


















