开发者社区> 问答> 正文

面向对象中__new__和__init__具体都有什么区别呢?

面向对象中__new__和__init__具体都有什么区别呢?

展开
收起
游客vwuxaq6iqaowc 2021-11-02 19:24:54 347 0
1 条回答
写回答
取消 提交回答
  • 1、__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别。 2、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例。 3、__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值。 4、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数

    2021-11-02 19:25:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载