Python之del析构方法_、call__方法、方法没有重载

Python 专栏收录该内容
¥19.90 ¥99.00
50篇文章

一、__del__方法(析构函数)和垃圾回收机制

__del__()称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象占用的资源,例如:打开的文件资源、网络连接等。

Python实现自动的垃圾回收,当对象没有被引用时(引用计数为0),由垃圾回收器调用__del__()。

我们也可以通过del语句删除对象,从而保证调用__del__()。

系统会自动提供__del__方法,一般不需要自定义析构方法。

#析构函数
class Person:
​
  def __del__(self):
    print("销毁对象:{0}".format(self))
​
p1 = Person()
p2 = Person()
del p2
print("程序结束")

 运算结果:

销毁对象:<__main__.Person object at 0x02175610>
程序结束
销毁对象:<__main__.Person object at 0x021755D0>

二、__call__方法和可调用对象

  1. Python 中,凡是可以将 () 直接应用到自身并执行,都称为可调用对象。

  2. 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象。

  3. 定义了__call__()的对象,称为“可调用对象”,即该对象可以像函数一样被调用。

  4. 该方法使得实例对象可以像调用普通函数那样,以“对象名()”的形式使用。

def f1():
  print("f1")
​
f1()  #本质也是调用了__call__()方法
​
class Car:
  def __call__(self, age,money):
    print("__call__方法")
    print("车龄:{0},金额:{1}".format(age,money))
​
f2 = Car()
f2(3,200000)  #像调用函数那样调用,本质也是调用了__call__()
​

 运行结果:

f1
车龄:3,金额:200000

三、方法没有重载

如果我们在类体中定义了多个重名的方法,只有最后一个方法有效。

建议:不要使用重名的方法!Python中方法没有重载。

  • 在其他一些语言(比如:Java)中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含3个部分:方法名、参数数量、参数类型。
  • Python中,方法的的参数没有声明类型(调用时确定参数的类型),参数的数量也可以由可变参数控制。因此,Python中是没有方法的重载的。 
 #Python中没有方法的重载。定义多个同名方法,只有最后一个有效
 class Person:
 
   def say_hi(self):
     print("hello")
 
   def say_hi(self,name):
     print("{0},hello".format(name))
 
 p1 = Person()
 
 #p1.say_hi()    #不带参,报错:TypeError: say_hi() missing 1 required positional argument: 'name'
 
 p1.say_hi("高淇")

四、方法的动态性

Python是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法

#测试方法的动态性
class Person:
  def work(self):
    print("努力上班!")
​
def play_game(self):
  print("玩游戏")
​
def work2(s):
  print("好好工作,努力上班!")
​
​
Person.play = play_game
Person.work = work2
​
p = Person()
p.play()
p.work()

 我们可以看到,Person动态的新增了play_game方法,以及用work2替换了work方法

Python类中自带清理函数__del__ 但是,如果您正在编写复杂的应用程序或库,并且正在处理大量对象,那么__del__函数可能会很有用。在上述示例代码中,我们定义了一个名为MyClass的类,它包含一个构造函数和一个__del__函数。当对象被删除时,__del__函数将被自动调用。Python中的__del__函数是一个内置的析构函数,它可以在对象被销毁时自动调用。总之,__del__函数是Python非常实用的一个特性,它可以帮助您避免内存泄漏问题,并确保您的应用程序或库能够正确地处理大量的对象。Python类中自带清理函数__del__ 阅读详情

相关推荐

科研党福音:如何用Zotero+Paper Agent打造你的AI论文速递系统(附详细配置教程)

本文为科研工作者提供了一套利用Zotero和开源工具Paper Agent构建自动化AI论文速递系统的详细教程。该系统能基于用户在Zotero中的文献库智能学习研究兴趣,每日自动从arXiv等平台筛选、下载并深度解读最相关的前沿论文,生成个性化日报,实现从被动接收到主动精准获取的知识工作流重塑。

kite3的博客 515

别再手动改颜色了!用这个Word宏,一键搞定Zotero参考文献超链接的蓝色样式

本文介绍如何利用Word宏一键修改Zotero参考文献的超链接颜色,解决手动调整的繁琐问题。通过详细的VBA代码解析和高级定制方案,帮助科研人员快速实现文献引用的自动化格式优化,提升论文排版效率。特别适合需要批量处理APA等标准格式蓝色超链接的用户。

weixin_30875157的博客 515

告别代码恐惧!用KRobot图形化编程,10分钟搞定Arduino巡线小车(附完整接线图)

本文介绍如何使用KRobot图形化编程工具快速搭建Arduino巡线小车,无需编写代码。从硬件准备到逻辑构建,详细讲解传感器数据处理、电机控制优化及高级功能扩展,帮助教育工作者和创客爱好者10分钟内完成项目。

weixin_30632089的博客 395

碳化硅外延层厚度测量:红外干涉光谱与FFT技术详解

薄膜厚度测量是半导体制造中的关键工艺控制环节,其核心原理基于光的干涉现象。当光在薄膜上下界面反射并叠加时,会产生与厚度相关的干涉条纹。通过分析这些条纹,可以非接触、无损地获取薄膜的精确厚度信息。这项技术的核心价值在于实现了对关键工艺参数的在线、快速监控,对于提升器件性能与生产良率至关重要。在第三代半导体,尤其是碳化硅功率器件的制造中,外延层厚度直接决定了器件的击穿电压和导通电阻等核心性能。红外干涉光谱法因其对碳化硅材料在红外波段的良好透过性,成为该领域主流的厚度测量方案。通过快速傅里叶变换(FFT)对采集到

weixin_29032489的博客 308

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程​ ,人工智能,计算机视觉,大模型,AI,本文围绕计算机视觉论文复现展开,介绍从理论到可运行代码的全流程。先强调复现的重要性,再讲解复现前的准备,包括明确目标、构建工具链;接着说明代码获取分析、环境配置调优、调试运行技巧及结果验证优化方法,还推荐了高效工具,提及复现中的伦理规范。旨在助读者掌握复现方法论,实现从经典模型到前沿论文的复现,推动学术成果落地。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 12万+

Easy系列PLC远程IO模块的安装配置和地址访问(EtherCAT总线)

EtherCAT分布式时钟DC(SOEM源码解析)EtherCAT分布式时钟DC(SOEM源码解析)_soem dc同步-优快云博客文章浏览阅读1.2k次。分布式时钟(DC,Dsitributed Clock)可以使所有 EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。_soem dc同步1200PLC连接分布式IO组态编程应用(ES200SP固件版本不同解决方法)

RXXW_Dor的博客 175

【C#程序员入门AI】必知的一些知识

2026年C#调用AI,核心就4个概念+3种方式4个概念:大模型(大脑)、嵌入(数字密码)、向量(载体)、Agent(超级助理)3种方式:云端API(快)、本地模型(隐私)、混合部署(最佳)不用怕复杂,跟着这个思路走,你就能从“AI小白”变成“C# AI开发能手”,把AI集成到你的.NET项目里,提升效率、创造价值!

人工智能AI技术 410

OCR技术解析:用Tesseract和PaddleOCR识别文本

OCR技术解析:用Tesseract和PaddleOCR识别文本 ,人工智能,计算机视觉,大模型,AI,光学字符识别(Optical Character Recognition,简称 OCR)是一项将图片、扫描件等文档中的文字信息转换为可编辑文本的技术。在数字化时代,OCR 技术广泛应用于文档处理、车牌识别、身份证识别、古籍数字化等领域,极大地提高了文字信息处理的效率。Tesseract 和 PaddleOCR 是两款极具代表性的 OCR 工具。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Python实例属性和实例方法_类对象、类属性、类方法、静态方法
下一篇: Python之私有属性、私有方法、装饰器及属性和类的命名规则
菜鸟之编程
博客等级 码龄7年 589粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

菜鸟之编程

您的支持将成为我的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值