首页 > 编程语言 >python3 del关键字

python3 del关键字

时间:2023-06-09 16:22:12浏览次数:45  
标签:__ stu self Stu 关键字 del print python3

1、介绍

python中,del关键字可以用于销毁对象。

  • 一方面,可以用于实现业务,比如删除集合的元素。
  • 另一方面,可以节约内存资源,提升程序效率。

 

class Stu:
    def __init__(self):
        self.name = 'abc'
    def __del__(self):
        print('del')
stu_1 = Stu()
stu_2 = Stu()
time.sleep(5)
print(stu_1)
print(stu_2)
"""
<__main__.Stu object at 0x0000024200A1BFD0>
<__main__.Stu object at 0x0000024200A1BF10>
del
del
"""
  • Python 有自动的垃圾回收机制,能自动将不需要使用的实例对象进行销毁。
  • 在对象被销毁时,会调用其__del__方法。每个对象都可以调用
  • 该方法默认并没有什么特殊作用

2、del使用

2.1 删除对象

class Stu:
    def __init__(self):
        self.name = 'abc'
    def __del__(self):
        print('del')
stu_1 = Stu()
stu_2 = Stu()
time.sleep(5)
del stu_2
print(stu_1)
print(stu_2)
"""
NameError: name 'stu_2' is not defined
del
<__main__.Stu object at 0x000001BFA835BFD0>
del
"""
  • del删除对象时,会调用该对象的__del__方法
  • 删除之后,对象不再存在,相当于未定义,使用会报异常
  • 即使报异常,程序不再执行,但是也会对各对象进行销毁,调用各自的__del__方法

 2.2 删除对象属性

class Stu:
    def __init__(self):
        self.name = 'abc'
    def __del__(self):
        print('del')
stu_1 = Stu()
stu_2 = Stu()
time.sleep(5)
del stu_2.name
print(stu_1)
print(stu_2)
print(stu_2.name)
"""
AttributeError: 'Stu' object has no attribute 'name'
<__main__.Stu object at 0x00000163AFEFBFD0>
<__main__.Stu object at 0x00000163AFEFBF70>
del
del
"""
  •  删除对象属性,不影响对象和其他属性,相当于未定义被删除属性

2.3 删除集合元素

arr = [1,2,3,4,5]
del arr[2]
print(arr)
del arr[2:]
print(arr)
arr = [1,2,3,4,5]
del arr[::2]
print(arr)
d = {'abc':'d', '12':'3', 'z':'fff'}
del d['12']
print(d)
"""
[1, 2, 4, 5]
[1, 2]
[2, 4]
{'abc': 'd', 'z': 'fff'}
"""
  •  注意,字典无法一次性删除多个

 

标签:__,stu,self,Stu,关键字,del,print,python3
From: https://www.cnblogs.com/wd404/p/17469537.html

相关文章

  • ESXI 平台系统在两台DELL R430中快速迁移实现服务器硬件升级实践过程
    ESXI 平台系统在两台DELLR430中快速迁移实现服务器硬件升级实践过程(R430上同系不同型号阵列卡间的数据迁移实践) 背景:现有两台R430服务器,需要把阵列卡为H330的服务器整机替换为H730阵列的服务器(即把H330上的服务器数据内容直接导入H730服务器中使用,H330目前为ESXI6.7虚拟化平台服......
  • Delphi 移动窗体
    移动窗体使用非标题栏移动窗体(在窗体中增加私有方法,如下)procedureTForm1.WMNCHitTest(varMsg:TWMNCHitTest);beginDefaultHandler(msg);ifMsg.Result=HTCLIENTthenMsg.Result:=HTCAPTION;end;方法2procedureTForm1.FormMouseMove(Sender:TObject......
  • java关键字native、static、final详解
    native: native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。JNI是Java本机接口(JavaNativeInterface),是一个本......
  • 自定义系统级无窗口全局快捷键热键-Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_2
      自定义系统级无窗口全局快捷键热键-Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801-2023年6月9日 programProject1_SetHotkeyBaiduSyncDisk;usesForms,Unit1_SetHotkeyBaiduSyncDiskin'Unit1_SetHotkeyBaiduSyncDisk.pas'{Form1};{$R*.res}b......
  • 【python基础】循环语句-break关键字
    1.break关键字break关键字,其作用是在循环中的代码块遇到此关键字,立刻跳出整个循环,执行循环外的下一条语句。其在while和for循环中的作用示意图如下:1.1break在while循环中的使用1.1.1不加else语句比如我们通过键盘输入单词,输出刚才的单词,编写程序如下所示:我们发现当我们输......
  • delphi 回调函数例子 用函数过程作为参数
    转:今天有个朋友问我怎么用函数或者过程作为函数的参数呢,我说网上有挺多的,然而他告诉我很多例子运行不起来,我搜了几个测试了下,不知道是不是我自己的软件版本的问题,运行不了,所以自己研究了下,把自己能运行的贴出来,和大家分享分享。先说说回调函数需要注意的几个步骤吧,首先要声明一......
  • python @property、@setter、@deleter的介绍与使用
    @property是一个装饰器,使一个方法可以像属性一样被使用,而不需要在调用的时候带上()0x01@property使用我们通过一个简单的研发需求为背景,逐步解释各个装饰器的使用这里领导给了个需求,开发一个类,可以返回一个人的姓,名字以及全名,十分简单嘛classPerson():def__init__(se......
  • python3 获取上个月、前几月、当前月的时间
    #!/usr/bin/envpython#-*-coding:utf-8-*-importcalendarfromdatetimeimportdatetimefromdateutil.relativedeltaimportrelativedelta#获取当前月defget_cur_month():returndatetime.now().strftime("%Y-%m")#获取前几个月defget_last_month(......
  • Reward Modelling(RM)and Reinforcement Learning from Human Feedback(RLHF)for Large la
    一、RLHF技术的背景OpenAI推出的ChatGPT对话模型掀起了新的AI热潮,它面对多种多样的问题对答如流,似乎已经打破了机器和人的边界。这一工作的背后是大型语言模型(LargeLanguageModel,LLM)生成领域的新训练范式:RLHF(ReinforcementLearningfromHumanFeedback),即以强化......
  • C++面试八股文:static和const的关键字有哪些用法?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第7面:面试官:C++中,static和const的关键字有哪些用法?二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静态局部变量,在第一次访问的时候初始化。3.内类修饰......