python中__init__方法_关于python中__init__方法理解

在理解__init__方法之前,我们需要搞明白,什么时候才需要用到的这个方法

什么是__init__?

__init__方法在python中是类的初始化,通俗来讲,就是每次只要你去创建一个类的实例对象的时候,这个对象就会有初始化相关的属性

什么时候需要去定义__init__?

在我们构建的类的时候,可以看看这个属性或者这个参数,后面的每个方法都需要用到,如果是,那就需要__init__,例如我们定义logging类的时候,需要定义日志格式,输出级别。这些其实我们在开始的时候就定义好,然后其他方法直接去用就可以了,那这个时候,我们就需要用到__init__,再抽象出来,比如工厂现在需要制造一批红色铅笔,那我是直接在生产前,把颜色直接灌注到材料里面,还是先生产一个没有颜色的铅笔,然后再多一道工序刷上红色油漆,最终得到一个红色铅笔呢?很明显是,在生产前直接灌注对应的红色颜料到机器,这样只要启动按钮,生产出来的就是红色铅笔是不是很方便,在结合__init__,这个时候,我就在__init__方法里面定义颜色为红色,那么每次创建铅笔的实例对象的时候,这个铅笔就是红色。这个就是__init__

再来一个代码大家来看看

1. 不用init()方法定义类 定义一个矩形的类,目的是求周长和面积。

class Rectangle():

def getPeri(self,a,b):

return (a + b)*2

def getArea(self,a,b):

return a*b

rect = Rectangle()

print(rect.getPeri(3,4))

print(rect.getArea(3,4))

得到的结果是:14 12

从上例中可以看到,我们在类中并没有定义init()方法,但是也能够得到类似的要求,结果返回了矩形实例rect的周长及面积。

但是,我定义了一个矩形,按理来说它的属性应该是它的长、宽。但是它竟然没有。这就是没有定义init()的原因了。

并且,在实例化对象的时候,rect = Rectangle()参数为空,没有指定a、b的值,只有在调用函数的时候才指定了。且类中定义的每个方法的参数都有a、b,这显然浪费感情,在类中直接指定方法就可以了。

2、用init()方法定义类 上述同样的例子,采用init()方法定义类,如下:

class Rectangle():

def __init__(self,a,b):

self.a = a

self.b = b

def getPeri(self):

return (self.a + self.b)*2

def getArea(self): return self.a * self.b

rect = Rectangle(3,4)

print(rect.getPeri())

print(rect.getArea())

print(rect.__dict__)out

14 12 {'a': 3, 'b': 4}

从上面代码可以看出,我们只需要在创建对象的时候,传入对应的参数,这个类下面的所有方法都可以直接用,不需要再做一次传递参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15 - java 继承

java继承 This > Son Super > Father Object 类是所有类的顶级父类 只要创建一个类默认都会继承这个顶级父类 – Object 在子类继承父类里面 构造器必须先构造一个父类(先有爸爸,才有儿子),必须首先构造父类&#xff0…

easyPOI基本用法详解

文章目录easyPOI基本用法1.Excel文件的简单导入和导出1.1准备工作1.2导入1.3导出1.4图片的导出1.5图片的导入1.6excel模板导出文件1.7excel转html2.Word文件导出2.1使用word模板导出2.2使用word模板导出多页3.excel导入时验证3.1环境准备3.2实战演练3.3注意事项easyPOI基本用法…

16 - java 类加载顺序

类的加载顺序 类对象、静态变量是存在元空间的方法区,实例对象是new出来的,放在堆里面的 一个类加载到内存的完整过程 加载父类 --> 加载子类 --> 构造父类 --> 构造子类 class文件要从磁盘加载到内存形成对象 内存靠地址去取寻址 – 随机存…

360全景倒车影像怎么看_别克关怀-后视镜和倒车影像 倒车时到底看哪个

很多人在考驾照的时候,倒车倒的都很熟练,但是一上路就不行了。一方面,这是因为道路上的状况多变,时常有行人经过,另一方面,上路之后,遇见的停车位千奇百怪,什么样子的都有&#xff0…

17 - 引用类型比较内容

引用数据类型比较 引用数据类型直接比较一定是 false --> 比较的是它俩的地址 Animail a1 new Animal(); Animail a2 new Animal(); System.out.println(a1 a2); //false特殊的 String String s1 "a"; String s2 "a"; System.out.println(s1 s…

springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口业务代码里通过IO流加载到这个Excel模板文件,读取指定的工作薄(也就是excel左下角的Shee…

idea(mac) 使用收集

其实 idea 后面的 webstorm phpstorm pycharm… 都大同小异 idea 使用积累1. 设置代码区字体大小2. command​ 滚轮改变字体大小3. 去掉代码区中间的白线4. 查看项目配置5. 自动删除类中无用包、自动导入包6. 显示行号和方法分隔符7. 提示的时候忽略大小写8. 统一显示 utf - 8…

epp是什么意思_什么是1K/2K/3K注塑?

ABC小词条的出现是因为公众号后台大家留言提问的名词很多,我们每周挑一个成本分析相关的小知识点,可能是工艺,成本方法,产品方面等话题,来做一个简短的ABC解释,如有错误欢迎指出。文末会提出一个问题&#…

SpringBoot使用Easypoi导出excel示例

关于easypoi可参考http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8 下面是在网上看过的总结比较好的导出操作&#xff1a; 准备工作&#xff1a;在pom.xml中引入相关依赖 <!-- easy-poi --> <dependency><groupId>cn.afterturn</groupId>…

facebook对话链接_Facebook已开源其最新的聊天机器人Blender

它是一种更具人性化的聊天机器人&#xff0c;并击败了Google成为世界上最好的聊天机器人> Photo by Alex Haney on Unsplash4月29日&#xff0c;Facebook AI Research(FAIR)宣布已构建并开源了一个新的聊天机器人Blender。最先进的开源聊天机器人Facebook AI拥有开源的Blend…

DOM操作获取标签方法、数据类型

一、操作 html 页面 document.getElementById(box); // 选中一个id为box的标签可以理解为从文档里面 通过一个 id:box 来获取 一个元素 // > document 文档 ⇒ get 得到 ⇒ Element 元素 ⇒ By 通过 ⇒ id:box 二、操作标签内容&#xff1a; innerHTML – 会解析标签 var…

基于easypoi实现自定义模板导出excel

项目中需要做一个统计报表功能&#xff0c;实现各种Excel报表数据导出。要求表头能够动态配置&#xff0c;表数据通过存储过程实现&#xff0c;也要求能够动态配置。 技术选型&#xff1a; 由于之前在项目中使用过easypoi&#xff0c;相对于原生apache poi&#xff0c;能够用很…

vb6 datagrid表格垂直居中_老板不喜欢看你的Excel表格,学完这些美化技巧,早日升职加薪...

Excel报表是工作中经常要制作的&#xff0c;给老板看的表格越是简单明了越好&#xff0c;工作得到认可&#xff0c;给你升职加薪&#xff0c;如果你发给你老板的表格是这样的&#xff1a;对齐方式各种各样&#xff0c;数据看起来也很枯燥&#xff0c;仅需简单4点&#xff0c;轻…

typeof 数据类型转换

typeof 可以转换的数据类型有&#xff1a; number string boolean object undefined function null 原来是给对象占位的&#xff0c;代表空对象。后来JavaScript设计者也没改过来&#xff0c;所以 typeof 一直认为 null 的类型是 object const num null; num // object一、 …

Java接口修饰符详解

接口就是提供一种统一的”协议”&#xff0c;而接口中的属性也属于“协议”中的成员。它们是公共的&#xff0c;静态的&#xff0c;最终的常量。相当于全局常量。抽象类是不“完全”的类&#xff0c;相当于是接口和具体类的一个中间层。即满足接口的抽象&#xff0c;也满足具体…

python深度复制列表_Python-如何深层复制列表?

我对列表副本有一些问题&#xff1a;所以之后我得到了E0来自get_edge&#xff0c;我做的副本E0通过调用E0_copy list(E0)。我猜这里E0_copy是的较深的副本E0&#xff0c;我通过E0_copy了karger(E)。但是在主要功能上。为什么print E0[1:10]for循环之前的结果与for循环之后的结…

数据转换之 Number

看起来不是数组的转换为数字之后就不是数字&#xff08;NaN&#xff09; 只有 才会进行字符串拼接 - * / 都不会 let num Number(123); console.log(typeof(num) : num); // number : 123let demo true; let num Number(demo); console.log(typeof(num) : num); /…

sqlite3修改表内容python_Python sqlite3数据库模块使用攻略

Python作为数据科学主流语言&#xff0c;被广泛用于数据读存、处理、分析、建模&#xff0c;可以说是无所不能。数据一般存放在本地文件或者数据库里&#xff0c;之前介绍过如何使用python读取本地文件&#xff0c;也对# PyMySQL、cx_Oracle等数据库连接库做过简单的使用分享。…

parseInt(string, radix)

一、 变成 整形数字 二、 当字母和数字混杂的时候&#xff0c;从数字位开始看&#xff0c;一直看到非数字位为止&#xff0c;如果这个混杂的字符串不是以数字开头&#xff0c;那么就是 NaN 三、 第二个参数&#xff0c;表示将变量的值以多少进制&#xff08;范围2~32&#xff0…

查看论坛隐藏链接_软连接与硬链接的区别

点击上方蓝色“后端开发杂谈”关注我们, 专注于后端日常开发技术分享硬链接与软连接的联系与区别文件都有文件名和数据, 这在Linux上被分为两部分: 用户数据(user data) 与 元数据(metadata). 用户数据, 即文件数据块( data block), 数据块是记录文件真实内容的地方; 元数据是文…