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中常用的各种数据库操作模块和连接实例
May 29 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python实现Linux的find命令实例分享
Jun 04 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
在双python下设置python3为默认的方法
Oct 31 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 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 cookie使用方法学习笔记分享
2013/11/07 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
python 全文检索引擎详解
2017/04/25 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
python时间日期操作方法实例小结
2020/02/06 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
超市端午节活动方案
2014/01/23 职场文书
爱情保证书范文
2014/02/01 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
Java异常体系非正常停止和分类
2022/06/14 Java/Android