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中线程编程之threading模块的使用详解
Jun 23 Python
Python查看微信撤回消息代码
Jun 07 Python
Python hashlib模块用法实例分析
Jun 12 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
对python Tkinter Text的用法详解
Oct 11 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python建造者模式案例运行原理解析
Jun 29 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
python 进程池pool使用详解
Oct 15 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 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数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
php中filter_input函数用法分析
2014/11/15 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
Javascript----文件操作
2007/01/18 Javascript
Js动态创建div
2008/09/25 Javascript
javascript Object与Function使用
2010/01/11 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JQuery实现图片轮播效果
2015/09/15 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
nodejs基础知识
2017/02/03 NodeJs
详解Vue.js入门环境搭建
2017/03/17 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
Python中列表(list)操作方法汇总
2014/08/18 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
python实现移位加密和解密
2019/03/22 Python
django中forms组件的使用与注意
2019/07/08 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
小学生操行评语
2014/04/22 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
食品安全承诺书范文
2014/08/29 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
综合素质评价自我评价
2015/03/06 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
酒店宣传语大全
2015/07/13 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python