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实现的扫雷游戏实例代码
Aug 01 Python
Django基础之Model操作步骤(介绍)
May 27 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
python实现对csv文件的列的内容读取
Jul 04 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
Python实现序列化及csv文件读取
Jan 19 Python
如何通过python计算圆周率PI
Nov 11 Python
python Pexpect模块的使用
Dec 25 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
python基础学习之生成器与文件系统知识总结
May 25 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
基于php无限分类的深入理解
2013/06/02 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
初识Laravel
2014/10/30 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
详解python调用cmd命令三种方法
2019/07/08 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
金融专业毕业生自荐信
2014/06/26 职场文书
聘用意向书
2014/07/29 职场文书
群众路线表态发言材料
2014/10/17 职场文书
导师鉴定意见
2015/06/05 职场文书
开业典礼致辞
2015/07/29 职场文书