投票中...
python (6121) Django (1832) 开源软件 (1692) chinaunix (886) 杂项其他 (322) iteye (181) Twisted (178) python基础 (177) Flask (125) python核心编程 (114) 技术聚会 (105) Scrapy (101) Linux开源 (99) 经验之谈 (97) 资讯 (93) 系统架构 (85) PyQt (77) python教程 (65) PyPy (63) Web.py (56) NumPy (55) 微博微趣 (53) ipython (49) PyCon (45) 基础与入门 (41) App Engine (38) PyCharm (38) web框架 (38) 服务器/数据库 (36) 其它python相关 (36) GUI开发 (35) 桌面开发 (32) Bottle (31) 解题报告 (27) Tornado (27) Python slides (27) Uliweb (26) 实践与应用 (24) 创业故事 (20) 常用模块与库 (20) 更多...
更多...
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