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 02 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Django用户认证系统 User对象解析
Aug 02 Python
Python基于WordCloud制作词云图
Nov 29 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
Python调用飞书发送消息的示例
Nov 10 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 whois查询API制作方法
2011/06/23 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
JS input 数字验证代码
2009/07/30 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
Position属性之relative用法
2015/12/14 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
python同时替换多个字符串方法示例
2019/09/17 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
python设置环境变量的作用整理
2020/02/17 Python
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
经销商会议欢迎词
2014/01/11 职场文书
科研课题实施方案
2014/03/18 职场文书
建筑安全责任书范本
2014/07/24 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
大学生村官个人总结
2015/02/15 职场文书
微信搭讪开场白
2015/05/28 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
Python 正则模块详情
2021/11/02 Python
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL