博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python __new__ 和 __init__
阅读量:6699 次
发布时间:2019-06-25

本文共 627 字,大约阅读时间需要 2 分钟。

概述

newinit 是类实例化的过程中被调用的方法, new 负责对象的创建,相当于构造器或者构造函数; init 负责对象初始化。 使用频率上, init 较多会被使用。

class A(object):    def __new__(cls):        return object.__new__(cls)    def __init__(self):        self.instance_method()    def instance_method(self):        print 'success!'newA = A()

区别

参数

new 的第一个参数是 cls,表示类本身。

init 类似一般的实例方法, 第一个参数是 self,表示实例。我们可以看到 init 方法运行之前, 实例已经可以被使用了(self参数)。实例上的其他的方法也是可以使用的了。

调用时机

当我们创建类的对象时, new 先被调用,返回一个对象,对象引用作为参数传递给 init__, 然后对象属性被初始化。__init 方法不能返回任何数据。

__new__ --->(创建对象) --> __init__(self)

使用

只有很少的时候需要自己编写 new 方法,比如单例模式。大多数情况下,只需要关心实例的初始化,初始化过程中属性的分配,以及是否调用其他的实例方法。

以上代码和经验仅在 Python(2.7) 得到验证。

转载地址:http://jpwlo.baihongyu.com/

你可能感兴趣的文章
[转]Apache重写中的flag说明
查看>>
iPhone控件之UILabel
查看>>
NHibernate自定义集合类型(上):基本实现方式
查看>>
IE9的css hack
查看>>
BZOJ 3218(a + b Problem-二分图套值域线段树)
查看>>
android 常用资料
查看>>
Web版RSS阅读器(三)——解析在线Rss订阅
查看>>
Android大图片导致内存问题小结
查看>>
SQL SERVER 服务启动后停止,某些服务由其它服务或程序使用时将自动停止
查看>>
能够免费做商业站点的CMS讨论
查看>>
Aix db2 经user a using b连接时报SQL30082N Security processing failed with reason "42"...
查看>>
Microsoft Build 2016 Day 2 记录(多图慎入)
查看>>
word异常关闭,找到丢失的word
查看>>
如何利用Boostrap做响应式设计的前端方案?
查看>>
Mastered in EVENT LOOP
查看>>
androidstudio2.3升级到3.2遇到的坑
查看>>
innerHTML、innerText、textContent、outerHTML和value,傻傻分不清楚?
查看>>
车联网上云最佳实践(一)
查看>>
为你推荐几款开发常用的代码编辑器
查看>>
opencv python 直方图
查看>>