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线程锁(thread)学习示例
Dec 04 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python3简单实现串口通信的方法
Jun 12 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
使用python实现kNN分类算法
Oct 16 Python
python实现小世界网络生成
Nov 21 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
python函数调用,循环,列表复制实例
May 03 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 Python
python实现A*寻路算法
Jun 13 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获取当前完整URL地址的函数
2014/12/21 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
PHP中“=>
2019/03/01 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
vue中各种通信传值方式总结
2019/02/14 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
全面解读Python Web开发框架Django
2014/06/30 Python
Python解析json文件相关知识学习
2016/03/01 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
python爬虫容易学吗
2020/06/02 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
安全隐患整改报告
2014/11/06 职场文书
学校安全管理制度
2015/08/06 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
2019消防宣传标语!
2019/07/10 职场文书