__init__函数用法

__init__是Python类中的一个特殊方法(special method),也称为构造函数。它在类实例化(创建对象)的过程中自动被调用,用于初始化对象的属性和执行其他必要的设置。

构造函数的完整命名是__init__(),注意它的名字中有两个前导和后缀的双下划线,这是Python中的命名约定,表明它是一个特殊的方法。它的定义通常位于类的声明中,用于描述类的初始状态。

示例类和构造函数:

class MyClass:def __init__(self, name, age=0):self.name = nameself.age = age# 创建对象实例,并传递必需参数
obj1 = MyClass("Alice")# 创建对象实例,并传递必需参数和可选参数
obj2 = MyClass("Bob", age=30)

在上面的示例中,MyClass类有一个构造函数__init__,它接受两个参数name和age,其中age有一个默认值0。当你创建对象obj1时,传递了必需参数name,并且age将会使用默认值0。当你创建对象obj2时,传递了必需参数name和可选参数age。在构造函数中,self.name和self.age被设置为传递的值,从而初始化了对象的属性。

示例:

class Person:def __init__(self, name, age=0):#如果不声明age的值,默认为0self.name = nameself.age = age# 创建一个Person对象,传递name和age参数
person1 = Person("Alice") #默认age=0# 创建一个Person对象,传递不同的name和age参数
person2 = Person("Bob", 25)# 访问对象的属性
print(person1.name)  # 输出: "Alice"
print(person2.age)   #输出:"0"
print(person2.name)  # 输出: "Bob"
print(person2.age)   # 输出: 25

在上面的示例中,我们定义了一个Person类,其中的构造函数__init__接受两个参数name和age。当我们创建person1和person2对象时,构造函数会将传递的参数设置为对象的属性。之后,我们可以通过访问对象的属性来获取和修改对象的状态。

我们再举一个其他的例子:

class EvalState:def __init__(self, image, depth=0):# 初始化EvalState对象时,传入图像(image)和深度(depth)两个参数,并将它们保存在对象的属性中self.image = imageself.depth = depthself.stopped = False

正是如你所说的,这段代码定义了一个名为EvalState的类,并且该类具有一个构造函数__init__。

让我们进一步解释这个类和构造函数:

类名:EvalState是类的名称,表示创建EvalState类的定义。该类可能是用于表示评估状态的一种数据结构。

构造函数:init(self, image, depth=0)是EvalState类的构造函数。构造函数在创建EvalState类的实例时自动被调用,它用于初始化新创建的对象。

参数:构造函数接受两个参数:image和depth。其中,image是一个必需的参数,它代表传递给构造函数的图像对象(或图像数据)。depth是一个可选参数,它有一个默认值0。可选参数意味着你可以在实例化对象时选择是否提供这个参数,如果未提供,它将使用默认值。

属性:在构造函数内部,通过self.image和self.depth来设置对象的属性。这样,每个EvalState类的实例都会有一个image属性和一个depth属性,分别对应传递给构造函数的image和depth参数的值。

其他属性:构造函数还设置了一个名为stopped的属性,并将其初始化为False。这个属性可能用于表示对象的某种状态。

使用这个类的构造函数创建对象的示例:

class EvalState:def __init__(self, image, depth=0):# 初始化EvalState对象时,传入图像(image)和深度(depth)两个参数,并将它们保存在对象的属性中self.image = imageself.depth = depthself.stopped = Falseimage_data=1
# 创建一个EvalState对象,传递image参数,使用默认的depth值(0)
state1 = EvalState(image_data)# 创建一个EvalState对象,传递image和depth参数
state2 = EvalState(image_data, depth=3)print(state1.image)# 输出结果为1
print(state1.depth)# 输出结果为0
print(state2.image)# 输出结果为1
print(state2.depth)# 输出结果为3

总结:
__init__构造函数是Python类的特殊方法,用于在对象创建时初始化对象的属性。通过构造函数,我们可以接收外部传递的参数,并将它们用于设置对象的初始状态,使得对象在创建后处于可用的状态。这样,在创建对象后,我们可以立即访问和操作对象的属性和方法。

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

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

相关文章

北斗gps卫星授时服务器(NTP)应用于防火墙场景

北斗gps卫星授时服务器(NTP)应用于防火墙场景 北斗gps卫星授时服务器(NTP)应用于防火墙场景 作为网络建设中不可或缺的两方面,在保证网络安全稳定以及时间同步精确性方面,防火墙和NTP服务器都极为重要。而防…

分享200+个关于AI的网站

分享200个关于AI的网站 欢迎大家访问:https://tools.haiyong.site/ai 快速导航 AI 应用AI 写作AI 编程AI 设计AI 作图AI 训练模型AI 影音编辑AI 效率助手 AI 应用 文心一言: https://yiyan.baidu.com/ 百度出品的人工智能语言模型 ChatGPT: https://chat.openai.c…

Matlab遍历文件及直方图统计

参考链接: 使用MATLAB遍历文件 strtrim用法 strsplit用法 cell单元数据使用{} close all; dir_path C:/Users/; fileFolder ls(dir_path); fileNum length(fileFolder(:,1)) - 2; for i 3:(3fileNum-1)file_path strcat(dir_path, strtrim(fileFolder(i,:)))…

推荐系统-ALS协同过滤算法实现

从协同过滤的分类来说,ALS(Alternating Least Squares,交替最小二乘)算法属于User-Item CF,也叫做混合CF,它同时考虑了User和Item两个方面,通过数量相对少的未被观察到的隐藏因子,来…

oracle-创建函数

oracle自定义函数 核心提示:函数用于返回特定数据。执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1]datatype1, argu2 [mode2] datatype2, … ) return datatype is begin end; 执行 var v1 varchar2(1…

微信小程序上传手机内部文件,PC文件

看了太多人的文档,拆开,组合,终于成功完成了这个写法,从上周五,到今天周三,共花5天解决这个问题。 不需要任何所谓的网络上传(浪费我好几天),不需要跨域,不需…

人脸检测实战-insightface

目录 简介 一、InsightFace介绍 二、安装 三、快速体验 四、代码实战 1、人脸检测 2、人脸识别 五、代码及示例图片链接 简介 目前github有非常多的人脸识别开源项目,下面列出几个常用的开源项目: 1、deepface 2、CompreFace 3、face_recogn…

【Python 实战】---- 批量识别图片中的文字,存入excel中【使用百度的通用文字识别】

分析 1. 获取信息图片示例 2. 运行实例 3. 运行结果 4. 各个文件的位置 实现 1. 需求分析 识别图片中的文字【采用百度的通用文字识别】;文字筛选,按照分类获取对应的文本;采用 openpyxl 实现将数据存入 excel 中。2. 获取 access_token 获取本地缓存的

网络安全大厂面试题

自我介绍 有没有挖过src? 平时web渗透怎么学的,有实战吗?有过成功发现漏洞的经历吗? 做web渗透时接触过哪些工具 xxe漏洞是什么?ssrf是什么? 打ctf的时候负责什么方向的题 为什么要搞信息安全,对…

数据结构之顺序表

一、概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存 储。在数组上完成数据的增删查改。 顺序表一般可以分为: 1. 静态顺序表:使用定长数组存储元素。 2. 动态顺序表:使用动…

基于粒子群优化算法(PSO)的Matlab、Python、Java、C++四种仿真实现(附上多个完整仿真源码)

PSO(Particle Swarm Optimization)是一种优化算法,它模拟了鸟群或鱼群等动物的集体行为,通过群体智能的方式来解决优化问题。PSO算法最初由Kennedy和Eberhart在1995年提出,近年来得到了广泛的应用。 本文将介绍PSO算法…

django学习笔记(1)

django创建项目 先创建一个文件夹用来放django的项目,我这里是My_Django_it 之后打开到该文件下,并用下面的指令来创建myDjango1项目 D:\>cd My_Django_itD:\My_Django_it>"D:\zzu_it\Django_learn\Scripts\django-admin.exe" startpr…

Websocket协议-http协议-tcp协议区别和相同点

通讯形式 单工通讯-数据只能单向传送一方来发送数据,另一方来接收数据 半双工通讯-数据能双向传送但不能同时双向传送 全双工通讯-数据能够同时双向传送和接受 注:http的通讯方式是分版本 http1.0:单工。因为是短连接,客户端…

malloc(1) 会分配多大的虚拟内存?

malloc() 分配的是虚拟内存。 如果分配后的虚拟内存没有被访问的话,虚拟内存是不会映射到物理内存的,这样就不会占用物理内存了。 只有在访问已分配的虚拟地址空间的时候,操作系统通过查找页表,发现虚拟内存对应的页没有在物理内…

SpringCloud学习—Feign负载均衡

Feign简介 Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端 只需要创建一个接口,然后添加注解即可。使用…

TEE GP(Global Platform)技术委员会及中国任务小组

TEE之GP(Global Platform)认证汇总 一、TEE GP技术委员会 二、GP中国任务小组 参考: GlobalPlatform Certification - GlobalPlatform

MultipartFile类型接收上传文件报出的UncheckedIOException以及删除tomcat临时文件失败源码探索

1、描述异常背景: 因为需要分析数据,待处理excel文件的数据行数太大,手动太累,花半小时写了一个定制的数据入库工具,改成了通用的,整个项目中的万级别数据都在工具上分析,写SQL进行分析&#x…

selenium IDE 接入jenkins-转载

Selenium-IDE脚本录制,selenium-side-runner自动化测试教程_51CTO博客_selenium ide录制脚本 备忘录

七大设计模式原则

1、开闭原则(Open-closed Principle) 开闭原则,是面向设计中最基础的设计原则。 一个软件实体类、模块、函数应该对扩展开放、对修改关闭。 强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性和可维护性。 实…

HBase 源码编译部署包

1. 版本 Java 版本: 1.8.0_201 HBase 版本: hbase-2.5.5 2.打包 git clone https://github.com/apache/hbase.git cd hbase git checkout branch-2.5 编译整个工程的 tar 包,编译一次 10 分钟左右 mvn clean package assembly:single -DskipTests ll hbase-assemb…