Python中的__init__作用是什么


Posted in Python onJune 09, 2020

看到Python中有个函数名比较奇特,__init__我知道加下划线的函数会自动运行,但是不知道它存在的具体意义..

Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。

只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。

这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。

同样,注意__del__方法与 destructor 的概念类似。"

恍然大悟原来__init__在类中被用做构造函数,固定写法,看似很死板,其实有道理

def __init__(self, name):
  '''Initializes the person's data.'''
  self.name = name
  print '(Initializing %s)' % self.name
  # When this person is created, he/she
  # adds to the population
  Person.population += 1

name变量属于对象(它使用self赋值)因此是对象的变量

self.name的值根据每个对象指定,这表明了它作为对象的变量的本质。

例如我们定义一个Box类,有width, height, depth三个属性,以及计算体积的方法:

class Box:
  def setDimension(self, width, height, depth):
    self.width = width
    self.height = height
    self.depth = depth
  def getVolume(self):
    return self.width * self.height * self.depth
b = Box()
b.setDimension(10, 20, 30)
print(b.getVolume())

我们在Box类中定义了setDimension方法去设定该Box的属性,这样过于繁琐,而用__init__()这个特殊的方法就可以方便地自己对类的属性进行定义,__init__()方法又被称为构造器(constructor)

class Box:
  #def setDimension(self, width, height, depth):
  #  self.width = width
  #  self.height = height
  #  self.depth = depth
  def __init__(self, width, height, depth):
    self.width = width
    self.height = height
    self.depth = depth
  def getVolume(self):
    return self.width * self.height * self.depth
b = Box(10, 20, 30)
print(b.getVolume())

知识点扩展:

__init__()要点如下:

1.名称固定,必须为__init__()

2.第一个参数固定,必须为self。self指的就是刚刚创建好的示例对象。

3.构造函数通常用来初始化示例属性,如下代码就是初始化示例属性:

4.通过类名(参数列表),来调用构造函数,调用后,将创建好的对象返回给相应的变量。

5.__init__()方法:初始化创建好的对象,初始化指的是:"给实例属性赋值"

6.__new__()方法:用于创建对象,但我们一般无需定义该方法。

以上就是Python中的__init__作用是什么的详细内容,更多关于Python中的__init__到底是干什么的的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python计算最大优先级队列实例
Dec 18 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
java中两个byte数组实现合并的示例
May 09 Python
深入浅析python 协程与go协程的区别
May 09 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
python小白学习包管理器pip安装
Jun 09 #Python
Python小白垃圾回收机制入门
Jun 09 #Python
Python中如何添加自定义模块
Jun 09 #Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 #Python
Python如何避免文件同名产生覆盖
Jun 09 #Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 #Python
Python嵌入C/C++进行开发详解
Jun 09 #Python
You might like
php无限极分类递归排序实现方法
2014/11/11 PHP
Laravel下生成验证码的类
2017/11/15 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python实现聊天小程序
2018/03/13 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
新电JAVA笔试题目
2014/08/31 面试题
机电专业体育教师求职信
2013/09/21 职场文书
法学专业应届生求职信
2013/10/16 职场文书
个人生活学习自我评价范文
2013/11/26 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
食品安全宣传标语
2014/06/07 职场文书
股东授权委托书
2014/10/15 职场文书
党员公开承诺书2015
2015/01/21 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
慰问信模板
2015/02/14 职场文书
大学生年度个人总结
2015/02/15 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP