__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__方法正在被调用

