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使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Django rest framework实现分页的示例
May 24 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python 图片去噪的方法示例
Jul 09 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
使用pandas的box_plot去除异常值
Dec 10 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
用python写爬虫简单吗
Jul 28 Python
Python-typing: 类型标注与支持 Any类型详解
May 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 将excel导入mysql
2009/11/09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
php绘制一个矩形的方法
2015/01/24 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP 裁剪图片
2021/03/09 PHP
jQuery取消ajax请求的方法
2015/06/09 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
jQuery实现飞机大战小游戏
2020/07/05 jQuery
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python nmap实现端口扫描器教程
2020/05/28 Python
python清空命令行方式
2020/01/13 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
实习指导老师评语
2014/04/26 职场文书
软环境建设心得体会
2014/09/09 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
2019 入党申请书范文
2019/07/10 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android