class Base:
def __new__(cls, *args, **kwargs):
print('base __new__')
return object.__new__(cls, *args, **kwargs)
def __init__(self):
print('base __init__')
def __del__(self):
print('base __del__')
class Demo(Base):
FLAG = 1
count = 0
def __new__(cls, *args, **kwargs):
Demo.count += 1
print('demo -> __new__')
return super().__new__(cls, *args, **kwargs)
def __init__(self):
print('demo -> __init__')
def __del__(self):
"""
注意:当有变量保存了一个对象的引用时,此对象的引用计数就会加1;
当使用del() 删除变量指向的对象时,则会减少对象的引用计数。
如果对象的引用计数不为1,那么会让这个对象的引用计数减1,
当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)
:return:
"""
Demo.count -= 1
print('demo -> __del__')
d = Demo()
dd = d
del dd
print(Demo.count)
print('over')
demo -> __new__
base __new__
demo -> __init__
1
over
demo -> __del__
网友评论