__init__(self[,...])
__init__和__new__组成python的构造器,但__init__更多的是负责初始化操作,相当于一个项目中的配置文件,__new__才是真正的构造函数,创建并返回一个实例对象,如果__new__只调用了一次,就会得到一个对象
__new__(cls[,...])
当继承一个不可修改的类,但又想去修改的时候,需要重写__new__方法
>>> class Capstr(str): #str是一个不可修改的类
def __new__(cls,string):
string=string.upper()
return str.__new__(cls,string)
>>> a=Capstr('i am Demi')
>>> a
'I AM DEMI'
__del__(self)
是对象的析造器,并非所有del操作都会调用__del__(),只有对象生成后,所有对它的引用都被del之后,才会启动垃圾回收机制,才会调用__del__方法
>>> class C:
def __init__(self):
print('__init__方法正在被调用')
def __del__(self):
print('__del__方法正在被调用')
>>> c1=C()
__init__方法正在被调用
>>> c2=c1
>>> del c2
>>> del c1
__del__方法正在被调用