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的多态性实例分析
Jul 07 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
python基础练习之几个简单的游戏
Nov 10 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python实现二叉树的遍历
Dec 11 Python
python实现txt文件格式转换为arff格式
May 31 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
PyQt5实现简单的计算器
May 30 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python全面解析接口返回数据
Feb 12 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调用数据库的存贮过程!
2006/10/09 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
Django的性能优化实现解析
2019/07/30 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
django使用JWT保存用户登录信息
2020/04/22 Python
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
应届生如何写自荐信
2014/01/05 职场文书
活动总结怎么写啊
2014/05/07 职场文书
理财计划书
2014/08/14 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Java的Object类的九种方法
2022/04/13 Java/Android