__init__()、__new__()、__call__()、__del__()用法

概念

__new__: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)
__init__ : 对象的初始化, 是一个实例方法,第一个参数是self。
__call__ : 对象可call,注意不是类,是对象。
__del__  :  是类的析构函数,是python垃圾回收机制的实际应用,当类的所有引用都被删除后,该类就会被系统从内存中删除

先有创建,才有初始化。即先__new__,而后__init__。

在Python中,类的行为就是这样,__new__、__init__、__call__、__del__等方法不是必须写的,会默认调用,如果自己定义了,就是override,可以custom。

实例

>>> 
>>> class A(object):
    def __init__(self, x):
        print 'x in __init__', x
    def __new__(cls, y):
        print 'y in __new__', y
        return super(A, cls).__new__(cls)
    def __call__(self, z):
        print 'z in __call__', z
    def __del__(self):
        print 'this is in A.__del__()'

>>> 
>>> A('123')('abc')
y in __new__ 123
x in __init__ 123
z in __call__ abc
this is in A.__del__()
>>>

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×