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数据类型之间的转换
Jun 08 Python
python 换位密码算法的实例详解
Jul 19 Python
Python PyQt5标准对话框用法示例
Aug 23 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
python中的句柄操作的方法示例
Jun 20 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
python编写猜数字小游戏
Oct 06 Python
python支持多线程的爬虫实例
Dec 21 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python获取指定网段正在使用的IP
Dec 14 Python
Python深度学习之Pytorch初步使用
May 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
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
Python网络爬虫实例讲解
2016/04/28 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
使用Python实现音频双通道分离
2020/12/25 Python
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
毕业生就业意向书
2014/04/01 职场文书
体育课课后反思
2014/04/24 职场文书
营业员岗位职责范本
2015/04/14 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
python中的getter与setter你了解吗
2022/03/24 Python