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类继承与子类实例初始化用法分析
Apr 17 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Python 正则表达式实现计算器功能
Apr 29 Python
不可错过的十本Python好书
Jul 06 Python
关于Django外键赋值问题详解
Aug 13 Python
快速入门python学习笔记
Dec 06 Python
从django的中间件直接返回请求的方法
May 30 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
python pandas 时间日期的处理实现
Jul 30 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
基于python制作简易版学生信息管理系统
Apr 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
php 进度条实现代码
2009/03/10 PHP
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
浅谈node的事件机制
2017/10/09 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
使用Python的turtle模块画图的方法
2017/11/15 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
python实现贪吃蛇游戏
2020/03/21 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
小学生考试获奖感言
2014/01/30 职场文书
行政人事岗位职责
2014/03/17 职场文书
以权谋私检举信范文
2015/03/02 职场文书
教师节班会开场白
2015/06/01 职场文书
图书借阅制度范本
2015/08/06 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
MySQL派生表联表查询实战过程
2022/03/20 MySQL