PythonTip >> 博文 >> python

[深入Python]__new__和__init__ - tuzkee

zihua 2014-02-08 15:02:18 点击: 755 | 收藏


[深入Python]__new__和__init__

class A(object):
    def __init__(self):
        print "init"
    def __new__(cls,*args, **kwargs):
        print "new %s"%cls
        return object.__new__(cls, *args, **kwargs)

A()

new <class '__main__.A'>
init

知识点:

继承自object的新式类才有__new__

__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供

__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例

__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

若__new__没有正确返回一个实例,那__init__是不会被调用的

详细解释可参考:

http://www.cnblogs.com/ifantastic/p/3175735.html

发表于 2014-02-08 12:01 tuzkee阅读( ... ) 评论( ... )编辑收藏

公告

Powered by:博客园
模板提供: 沪江博客
Copyright ©2014 tuzkee

原文链接:http://www.tuicool.com/articles/yUzAb2

作者:zihua | 分类: python | 标签: python | 阅读: 755 | 发布于: 2014-02-08 15时 |