精华内容
下载资源
问答
  • python析构

    2016-03-14 17:40:38
    __del__,析构函数不能手动调用,而是每个对象引用使用完之后系统自动回收垃圾,且按照字典顺序(A-Za-z)来回收。
    __del__,析构函数不能手动调用,而是每个对象引用使用完之后系统自动回收垃圾,且按照字典顺序(A-Za-z)来回收。
    class NewClass(object):
        num_count = 0 # 所有的实例都共享此变量,即不单独为每个实例分配
        def __init__(self,name):
            self.name = name
            NewClass.num_count += 1
        def __del__(self):
            NewClass.num_count -= 1
            print ("Del",self.name)ewClass("Hello")
    bb = aa
    cc = aa
    del bb,cc,aa
    print ("Over")

    这个例子手动删除掉全部的应用所以会先执行__del__再输出Over:

    Del Hello
    Over

    这里例子中只手动删除一部分引用,则程序运行最后才会执行__del__,也就是先输出Over再执行__del__

    class NewClass(object):
        num_count = 0 # 所有的实例都共享此变量,即不单独为每个实例分配
        def __init__(self,name):
            self.name = name
            NewClass.num_count += 1
        def __del__(self):
            NewClass.num_count -= 1
            print ("Del",self.name)
        def test():
            print ("aa")
    
    aa = NewClass("Hello")
    bb = aa
    cc = aa
    del bb,cc
    print ("Over")

    输出结果:

    Over
    Del Hello
    展开全文
  • python析构和构造函数

    2020-07-28 10:23:10
    概述: Python中,构造函数(constructor)和析构函数(destructor)同为类中默认存在的无初始内容函数(可写入内容),且都在会在对对象执行操...

    概述:

    Python中,构造函数(constructor)和析构函数(destructor)同为类中默认存在的无初始内容函数(可写入内容),且都在会在对对象执行操作时调用。

    不同的是构造函数在创建对象后自动被调用,而析构函数在对象被销毁前(作为垃圾被收集)自动被调用。两者有异曲同工之妙。

    可以说构造函数和析构函数就相当于两个哨兵,创建对象时,构造函数告诉计算机,我要申请实例化对象所需的内存,销毁对象时,析构函数告诉计算机,这些内存可以被回收并释放了。

    测试:

    1. 调用次序

    创建一个类并初始化构造函数__init__和析构函数__del__的内容,并且将析构函数放在最前定义,构造函数放在最后定义:

    class Person:
        def __del__(self):
            print("这里是析构函数")
        def say(self):
            print("这里是自定义方法")
        def __init__(self):
            print("这里是构造函数")
    per = Person()
    per.say()
    

    输出结果:

    这里是构造函数
    这里是自定义方法
    这里是析构函数
    

    结果显示最先被调用的是构造函数,其次是主动调用的自定义方法,最后是析构函数。而且构造函数和析构函数是自动被调用。

    (经评论指出,这里做注释:此处之所以会调用析构函数是因为该程序结束,对象即被销毁,所以调用了析构函数。具体请看下一篇:python中的垃圾回收机制

    1. 构造函数的作用

    构造函数默认无初始内容,在Python的类中默认存在且无需用户调用,它的最大作用是在创建对象时进行初始化工作

    定义一个类(利用构造函数初始化属性)

    class Person:
        def say(self):
            print("Hello, I am %s, %d years old"% (self.name, self.age))
        def __init__(self, name, age):  #参数是name和age,self不需要传参
            self.name = name
            self.age = age
    per1 = Person("Tom", 18)    #在创建对象时进行传参初始化
    per1.say()
    per2 = Person("Jerry", 16)
    per2.say()
    

    打印结果

    Hello, I am Tom, 18 years old
    Hello, I am Jerry, 16 years old
    

    在实例化类时,必须写上且写全构造函数中的参数(不包括self),以次来进行属性的初始化。

    附:

    • 构造函数可以利用参数列表进行初始化对象属性,但是析构函数只能有一个默认的self参数,不能自定义其他参数。

    • 构造函数和析构函数是自动调用的,但是也可以主动调用:使用className.__init__()

    • 析构函数一般无需写入内容,因为Python有垃圾回收机制,不需要手动释放。

    转载:添加链接描述https://blog.csdn.net/qq_43968080/article/details/90729828

    展开全文
  • Python 析构方法__del__

    2021-05-07 07:38:00
    输出结果 # ---ok--- # 31 # ----deconstrcut------- # 43 # 输出结果 c = Car() print('31') print('43') # 没有主动触发,但程序执行完,对象被销毁,会自动触发, # Python的内存回收机制 # 输出结果 # ---ok--- ...
    class Car:
        def __init__(self):
            print('---ok---')
    
        def __del__(self):
            print('----deconstrcut-------')
    
    
    c = Car()
    print('31')
    del c       #主动触发__del__析构函数,删除实例,会执行__del__里面的代码
    print('43')
    
    # 输出结果
    # ---ok---
    # 31
    # ----deconstrcut-------
    # 43
    
    
    # 输出结果
    c = Car()
    print('31')
    print('43')     # 没有主动触发,但程序执行完,对象被销毁,会自动触发,
                    # Python的内存回收机制
    # 输出结果
    # ---ok---
    # 31
    # 43
    # ----deconstrcut-------
    
    展开全文
  • python析构方法__del__

    2017-05-02 16:58:00
    此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。 示例代码 ...

    析构方法

    此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

    示例代码

    "模拟open的函数,可以使用析构方法,释放内存,关闭打开的文件"
    
    class Open:
        def __init__(self,filepath,mode="r",encode="utf-8"):
            self.f = open(filepath,mode=mode,encoding=encode)
            
        def write(self):
            pass
        
        def __getattr__(self, item):
            return getattr(self.f,item)
        
        def __del__(self):
            print("--->del")
            self.f.close()
    
    f = Open("a.txt","w")
    del f #关闭文件,释放内存

    转载于:https://www.cnblogs.com/greatkyle/p/6796976.html

    展开全文
  • python 析构对象 为了研究一下python对象的析构,创建了对象A和包含对象A的列表的对象B import random class A(): def __init__(self): self.a = random.randint(0, 50) class B(): def __init__(self): self....
  • python析构方法

    千次阅读 2018-09-15 20:11:08
    # 析构放法:当对象在内存中被释放时,自动触发执行。 # 注:此方法一般无需定义,因为python 是一门高级语言, # 程序员在使用时无需关心内存的分配和释放, # 析构函数的调用是由解释器在进行垃圾回收时是自动触发...
  • python析构方法

    2019-04-17 14:56:00
    Python有垃圾回收机制会自动调用__del__,也可自己调用。 # -*- coding: UTF-8 -*- class Student: company = 'LOL' def __del__(self): print("销毁对象{0}".format(self)) s1 = Student()s2 = ...
  • **概述:当一个对象被删除或者被销毁时,python解释器也会默认调用一种方法,这个方法为_del_()方法,也称为析构方法。 主要应用:就是来操作对象的释放,对象一旦被释放,对象就不能在使用了。 还可以手动删除的...
  • python析构方法__del__

    2018-07-09 16:02:11
    #!/usr/bin/envpython #-*-coding:utf-8-*- #File:析构方法del.py #Author:HuXianyong #Date:2018/7/9 classFoo: #初始化方法 #创建完对象后会自动被调用 def__init__(self,name): p...
  • python 41 构造 析构

    2020-03-30 23:24:25
    构造 析构 ————init__ __new__ 解析构 __del__(self) l垃圾回收机制 __init__(self[,...]) shii实例化对象时 叫构造 返回未为None class Rectangle: def __init__(self,x,y): self.x =x self.y =y def get...
  • 1、析构方法:释放一个空间之前执行 (new构造方法 申请一个空间) 某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源 1)垃圾回收机制 class A: def __del__(self): # 析构方法 del...
  • python分支语法————析构法 表示定义:特定的名字__del__() 作用:在销毁/删除对象时使用用来回收资源,防止内存泄露。 python在编码人没有写析构方法,python会自动加该方法 主动写python编码后,将代入析构法 #...
  • 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new...3.Python Class init de
  • python构造与析构

    2014-02-13 11:14:38
    /usr/bin/python class Test: name = "" ## like toString in Java def __str__(self): return "class Test..." ##constructor def __init__(self,name='xxx'): self.name = name ##destructor def
  • python有个垃圾自动回收机制 , 每段时间会自动刷新整个内存,把内存垃圾东西删除 析构函数: 在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 如关闭一些数据库连接,关闭打开的临时文件 ...
  • 13.Python构造和析构

    2020-07-08 09:37:58
    class CapStr(str):#继承str def __new__(cls,string): string=string.upper() #变成大写字母 return str.__new__(cls,string) >>> a=CapStr('i love you') >>> a 'I LOVE YOU' >>> 4.__del__(self):析构器,...
  • 概述 定义 例子 一. 这时程序结束,释放内存空间 ...可以发现析构方法并没有执行. 当在 程序等待中…之后输入一段数字再回车; 程序结束.内存释放. 三.对象呗手动删除时也调用析构方法 四.总结 ...
  • 析构(__del__)修改全局变量异常(__del__ of 本文地址: http://blog.csdn.net/caroline_wendy/article/details/23377053 异常描述: "Exception AttributeError: "'NoneType' object has no attribute 'number'...
  • python 类的析构问题

    2011-10-17 10:30:08
    在练习python的时候遇到一个问题,请教大家。 先贴代码: class Person: population = 0 def __init__(self, name): self.name = name print "Add name", self.name Person.population +=...
  • python:构造和析构

    2019-04-09 18:56:24
    魔法方法是面向对象的python的一切 魔法之处是总在适当的时候自动被调用 注:以下魔法方法的双下划线均省略未写。 new(cls[, …]) 继承一个不可变类型 >>> class CapStr(str): def __new__(cls,...
  • python学习构造和析构

    2019-09-28 14:51:10
    __init__(self[, ...])方法 1.返回值必须为None >>> class Rectangle: def __init__(self, x, y): self.x = x self.y = y def getPeri(self): return (self.x + sel...
  • Python 10 构造和析构

    2018-06-27 16:18:40
    特点:被双下划线包围,如__init____init__方法 (返回值固定:None) self相当于一座通用的桥梁,__init__初始化参数,通过self传到各个函数里面进行操作class Rectangle: def __init__(self,x,y): self.x=x ...
  • python构造函数和析构函数

    千次阅读 2018-05-02 14:54:24
    构造函数和析构函数 1、构造方法的使用 ​ 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。 构造方法也叫做构造器,是指当实例化一个对象(创建一...
  • 主要介绍了浅谈python3 构造函数和析构函数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python构造方法和析构方法

    千次阅读 2017-02-19 21:27:57
    class Go:  def __init__(self):  print("开始")  def __del__(self):#析构方法  print("结束")   G=Go()
  • 析构: def __del__(self):  print("del..run...") r1 = Role("xx") del r1 结果打印del..run... 析构函数在实例被销毁的时候执行__del__ 做程序的收尾工作名字r1被删除后,垃圾回收机制会将对象清空就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 670
精华内容 268
关键字:

python析构

python 订阅