在 Python 类中使用构造函数和析构函数

使用Python类的构造函数和析构函数 构造函数__init__在Person类的实例被创建时被调用,它将类实例的name属性设置为传入的参数,并将类实例的人口计数population加1。您可以从gc.garbage中获取被忽略的对象列表。问题是,如果我在程序中显式地删除Person类的实例,析构函数__del__是否会被自动调用,或者我是否需要在“main”程序/类中添加一些东西,如上面的代码示例所示?析构函数__del__会在垃圾回收器收集对象时自动调用,而不是在丢失对对象的最后一个引用时,也不是在执行del object时调用。 阅读详情

在 Python 类中使用构造函数和析构函数

与任何其他OOP语言一样,Python也有构造函数和析构函数,但命名约定不同。在类中使用构造函数的目的是在创建类的实例时初始化类或实例级属性(主要是实例属性)或为其赋值。在Python中,__init__方法被称为构造函数,在创建新实例时总是执行。Python支持三种类型的构造函数,如下所示:

默认构造函数

当我们在类中不包含任何构造函数(__init__方法)或忘记声明它时,该类将使用空的默认构造函数。构造函数除了初始化类的实例外,什么也不做。

非参数化构造函数

这种类型的构造函数除了引用正在创建的实例外,不接受任何参数。以下代码示例显示了一个非参数化构造函数:

class 类:
	def __init__(我):
		print("这是'我'的一个实例,正在创建……")
类类 = 类() # 输出:这是'我'的一个实例,正在创建……

由于此构造函数不接收任何实参,因此我们可以向其添加的功能有限。例如,在我们的示例代码中,我们向控制台输出了一条消息,表示已为类类创建了一个新实例。

参数化构造函数

参数化构造函数可以接受一个或多个参数,并且可以根据通过构造函数方法提供的输入参数设置实例的状态。类类将使用参数化构造函数进行更新,如下所示:

class 类:
	def __init__(我, 姓, 名):
		我.姓 = 姓
        我.名 = 名

析构函数

析构函数与构造函数相反——当实例被删除或销毁时,它们会被执行。在Python中,析构函数很少使用,因为Python有一个垃圾收集器,可以处理删除不再被任何其他实例或程序引用的实例。如果我们需要在析构函数方法中添加逻辑,我们可以使用特殊的__del__方法来实现它。当删除实例的所有引用时,它会自动调用。以下是如何在Python中定义析构函数方法的语法:

class 类:
    def __init__(我, 姓, 名):
        我.姓 = 姓
        我.名 = 名
    
    def __del__(我):
        print("我,姓名:", 我.姓, 我.名, "被删除了。")
    
if __name__ == "__main__":
    类类 = 类("张", "三")

Python 的析构函数不会在变量超出作用域后自动执行。一个类如果需要释放一些资源,需要手工写一个其它方法,供释放资源使用。上面例子中的__del__就不会实被自动执行。

class 类:
    def __init__(我, 姓, 名):
        我.姓 = 姓
        我.名 = 名
    
    def 清理(我):
        print("我,姓名:", 我.姓, 我.名, "被删除了。")
    
    def __del__(我):
        print("再见。")
    
if __name__ == "__main__":
    类类 = 类("张", "三")
    类类.清理()

官方文档中表明启用周期检测器时会检测到垃圾的循环引用(默认情况下它是打开的),但只有在没有涉及Python __del__ 方法的情况下才能清除。Python 不知道破坏彼此保持循环引用的对象的安全顺序,因此它则不会为这些方法调用析构函数。

<完>

RACECAR底层平台安装:Jetson Nano+ROS Melodic全栈部署指南 移动机器人开发中,底层平台安装是将硬件转化为可编程移动平台的关键起点。其核心在于嵌入式系统、ROS中间件与传感器驱动的深度协同——需兼顾内核模块加载、GPIO/PWM精确控制、I2C设备初始化及ROS工作空间构建等多层技术耦合。尤其在竞速级小车如RACECAR场景下,Jetson Nano的硬件加速能力、MPU6050 IMU固件加载、TB6612FNG电机驱动配置等细节,直接决定运动控制精度与实时性。本文聚焦Ubuntu 18.04 + ROS Melodic + JetPack 4.4.1技术栈,覆盖从 阅读详情

相关推荐

56-FMC连接器电路设计

FMC连接器电路设计

weixin_66510961的博客 4721

python中析构函数的用法

析构函数的作用就是销毁/删除临时的变量,主要对那些长期占用内存的临时变量进行销毁. class Person: eys = 2 # 所有对象都具有 def __init__(self, name, age): print('构造函数') self.name = name self.age = age def eat(self): print('吃饭') def sleep(self):

weixin_65748882的博客 4434

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、编程代码实现三个部分。

beyond951的博客 7301

python析构函数

参考文章:python析构函数 - Bigberg - 博客园 构造函数 用于初始化类的内容部状态,Python提供的构造函数式 __init__(),也就是当该类被实例化的时候就会执行该函数,__init__()方法是可选的,如果不提供,Python 会给出默认的__init__方法。 析构函数 “__del__”是析构函数,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。   __.

justlpf的专栏 3853

esim分布式云卡池技术

eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.

著名博客 3707

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 373

Python语法进阶:析构函数与封装详解

本文详细讲解了Python语法进阶中的析构函数和封装两个概念。析构函数用于在对象被销毁前执行一些清理工作,而封装则是将数据和方法封装在类中,以提高代码的可维护性和安全性。通过掌握这两个概念,我们可以更加深入地理解Python的面向对象编程特性,并编写出更加健壮和可维护的代码。

2301_79727522的博客 1378

【推荐100个unity插件之10】Unity Cinemachine最全的最详细的虚拟相机介绍,详细案例讲解,快速上手

相信很多同学都用过Unity的Cinemachine插件,使用它可以很方便地实现一些摄像机效果,比如摄像机追踪、推拉镜头、分镜等效果。Cinemachine的知识特别的多又很常用,本来是想做一期来讲一下的,结果搜索发现已经有人做过了,而且内容挺全的,但是内容可能比较啰嗦,还有部分没有补充,所以我就先转载下来,后续有时间再优化修改补充,觉得内容不错的,很欢迎大家去支持原作者。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2万+

python---构造函数、析构函数

在类中定义一个名为del的方法即可。这个方法不需要任何参数(除了必须的 self),并且没有返回值。# 构造函数,初始化对象print(f"对象 {self.name} 被创建了")# 析构函数,对象销毁时调用print(f"对象 {self.name} 即将被销毁")

qq_58662768的博客 1449

YOLOv8 架构改造实战:添加 P2 小目标检测头与 P6 超大目标检测头

上采样是指将特征图的空间尺寸变大(例如从 20×20 → 80×80),用来提升图像的分辨率。常见于解码器结构或特征融合中。下采样是指将特征图的空间尺寸缩小(例如从 256×256 → 128×128),通常用于减少计算量、提取更高级语义特征。操作目的方法尺寸变化上采样放大特征图插值算法变大(如2×)下采样压缩特征图、提取语义stride卷积等变小(如1/2)

FJN110的博客 574

vscode配置matlab工作环境

前面有两篇文章我们分别讲了在vscode里面如何配置C语言环境和python环境,那两篇文章总体来说比较复杂,当然这篇也有许多有趣的问题。 附上链接: 文章目录matlab简介基本要求code runner插件与matlab相关的插件添加路径小结code runner是否支持更多语言更多选择另一个选择 matlab简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 MATLAB是ma

Cachel Wood的博客 4540

Python 中的析构函数:对象生命周期的终结艺术

深入讲解了 Python 中的析构函数,包括其定义、语法、调用时机以及实际应用场景。析构函数在对象生命周期结束时自动调用,主要用于释放对象占用的资源,如关闭文件、释放内存等。文章通过丰富的示例代码,展示了如何在类中定义析构函数,以及在哪些情况下会触发析构函数的调用。同时,还探讨了析构函数在资源管理和内存管理中的实际应用,帮助读者更好地理解和应用这一重要概念。

qq_62774262的博客 1313

FreeRTOS全攻略:从入门到精通

本文聚焦 FreeRTOS,从基础概念出发,阐述其开源、轻量级等优势。着重介绍 FreeRTOS 入门知识,涵盖内存管理、任务操作、同步互斥机制等核心内容。其中,空闲任务与钩子函数保障系统基础运行与功能扩展;队列、信号量、互斥锁和事件组等机制,分别从数据传递、资源访问控制、优先级问题解决及多任务同步等方面,为开发者提供高效的任务间协作与资源管理方案,助力开发者掌握 FreeRTOS 核心技术,为嵌入式项目开发筑牢基础。

邓邓子的博客 6356

python 类 构造函数_Python | 使用构造函数和析构函数创建员工类

python 类 构造函数 Python-使用构造函数和析构函数代码的员工类 (Python - employee class using Constructor and Destructor code) # employee class code in Python # class definition class Employee: def __init__(self): #Co...

cumtv80668的专栏 358

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python(类(创建、构造函数、析构函数)的基础知识)

python(类和继承的基础知识) 在c、c++语言中,经常会遇到这些,而且在C++ 中类的使用还是难点,对我而言学习了这么久,目前还是一知半解。 看过昨天我写的博客,就知道我是在复习Python的基础语法知识,今天也还在看,希望自己在复习的同时,能够以这种方式学习,同时还能带着即将开学的小伙伴一起熟悉这些基础命令。 跟着步伐去走(大神除外,只带着复习基础知识) 一、python类 1.创建类cl...

weixin_42989738的博客 4972

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Python】构造函数、析构函数与可变参数传递

在《【Python】Windows版本的Python开发环境的配置,Helloworld,Python中文问题,输入输出、条件、循环、数组、类》(点击打开链接)虽然一定程度上介绍了Python中类的用法,然而并没有涉及到类中最重要的两个东西,一个是构造函数,另一个是析构函数。 构造函数的作用是保证每个对象的数据成员都有何时的初始值。 析构函数的作用是回收内存和资源,通常用于释放在构造函数或对象

编程记录,亲测有效 5886

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python中构造方法和析构方法的区别_python析构函数与构造函数的用法讲解

class Test(object):def __init__(self, name):self.name = nameprint('这是构造函数')def say_hi(self):print('hell, %s' % self.name)def __del__(self):print('这是析构函数')obj = Test('bigberg')obj.say_hi()del obj#输出这是构...

weixin_39649611的博客 243

Python类的定义

必须知道的概念 类 Class: 用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 实例变量:定义在方法中的变量,只作用于当前实例的类。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据。 方法:类中定义的函数。在类内...

步步拾遗 1万+

python对象与类

一些基本概念 对象(Object):将一组数据和与这组数据有关操作组装在一起,形成一个实体,这个实体就是一个对象。 类 (Class):具有相同或相似性质的对象的抽象就是类。因此,对象的抽象就是类,类的具体化就是对象。例如,如果人类是一个类,则一个具体的人就是一个对象。 封装:将数据和操作捆绑在一起,定义一个新类的过程就是封装。 继承:指一个类可以继承另一个类的特性,和父子关系的类似。 方法:也称...

孤的博客 625

python请简述构造函数和析构函数的作用_Python面向对象程序设计构造函数和析构函数用法分析...

本文实例讲述了Python面向对象程序设计构造函数和析构函数用法。分享给大家供大家参考,具体如下:构造函数和析构函数1、构造方法的使用很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法。演示1:构造方法被调用的契机class Person():#构...

weixin_34917038的博客 196

Python的构造函数和析构函数,对象和类的变量不一样

1.Python像其他的OOP语言一样在类里面会有构造和析构函数... 类似于PHP的, 构造和析构函数并不需要显式的写出来...他们只是在这个对象生成和销毁的时候才会被调用.. 如果显式的定义了,那么在对象被生成和销毁时就会分别的调用这两个函数 构造函数: __init__ 这个函数在用代码生成一个对象的实例的时候就会被调用 析构函数: __del__ 这个函数一般很难知道在哪里会被调用...

weixin_33991418的博客 171

python类的构造方法名称_Python面向对象程序设计构造函数和析构函数用法分析

本文实例讲述了Python面向对象程序设计构造函数和析构函数用法。分享给大家供大家参考,具体如下:构造函数和析构函数1、构造方法的使用很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法。演示1:构造方法被调用的契机class Person():#构...

weixin_39710288的博客 599

Python中类的使用(3析构函数__del__()使用)

析构函数:__del__() 释放对象是自动调用class Person(object): def run(self): print("run") def eat(self, food): print("eat" + food) def __init__(self,name,age,height,weight): self.n...

383

类的构造函数/类的析构函数

类的构造函数Python类的构造函数是__init__。它与其他函数的差别,首先是通过前面和后面带两个双下划线来跟别的函数名称进行区分。它的格式例如以下:def __init__(self, 參数列表):def是定义函数的keyword,__init__是构造函数的名称,self是类本身的參数,用来区分那些函数是属于类。最后的參数列表是可有可无的。构造函数主要用来初始化成员变量和分配资源。它是...

weixin_34270865的博客 139

python析构函数什么时候调用_python之类的构造和析构函数

python的构造和析构函数为固定的名字。构造函数——————— __init__( self )析构函数——————— __del__( self )不像c++中那样构造函数和析构函数是类名字。并且在python中这构造函数和析构函数可以省略。先看简单的例子:class Simple:def __init__( self ):passdef __del__( self ):passdef ...

weixin_39868592的博客 937

python的构造函数和析构函数_简介python中的析构函数与构造函数

python的构造和析构函数为固定的名字。构造函数__init__( self )**析构函数__del__( self )**不像c++中那样构造函数和析构函数是类名字。并且在python中这构造函数和析构函数可以省略。先看简单的例子:class Simple: def __init__( self ):passdef __del__( self ):passdef func( self ):p...

weixin_36191781的博客 685
上一篇: Python 中类属性和实例属性的区别
下一篇: 区别 Python 中的类方法和实例方法
dowhileprogramming
博客等级 码龄25年 512粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dowhileprogramming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值