python中的__init__ 、__new__、__call__小结

913次阅读  |  发布于5年以前

1.new(cls, *args, kwargs) 创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身
2.init(self, *args, *kwargs) 创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用new之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】
3.call(self,
args,
kwargs) 如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符

看具体的例子:

复制代码 代码如下:

class O(object):

def __init__(self, *args, **kwargs):  
    print "init"  
    super(O, self).__init__(*args, **kwargs)

def __new__(cls, *args, **kwargs):  
    print "new", cls  
    return super(O, cls).__new__(cls, *args, **kwargs)

def __call__(self,  *args, **kwargs):  
    print "call"  


oo = O()  
print "________"  
oo()    

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8