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中操作字符串之rstrip()方法的使用
May 19 Python
Python下Fabric的简单部署方法
Jul 14 Python
python设计模式大全
Jun 27 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
python3模块smtplib实现发送邮件功能
May 22 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
Python内置类型性能分析过程实例
Jan 29 Python
python数据分析之用sklearn预测糖尿病
Apr 22 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
php实现对象克隆的方法
2015/06/20 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
Python用threading实现多线程详解
2017/02/03 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
客服实习的个人自我鉴定
2013/10/20 职场文书
安全宣传标语口号
2014/06/06 职场文书
学校运动会霸气口号
2014/06/07 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
云冈石窟导游词
2015/02/04 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书