python的析构方法__del__

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File  : 析构方法del.py
# Author: HuXianyong
# Date  : 2018/7/9

class Foo:
    # 初始化方法
    # 创建完对象后会自动被调用
    def __init__(self, name):
        print('__init__方法被调用')
        self.name = name
    # 析构方法
    # 当对象被删除时,会自动被调用,然后释放内存
    def __del__(self):
        print("脚本运行结束,释放内存")
# 创建对象
f1 = Foo("hxy")
# 删除对象
del f1.name
# print(f1.name)
#del f1
print('这应该是脚本的最后一句!')

对象的__del__是对象在被gc消除回收的时候起作用的一个方法,它的执行一般也就意味着对象不能够继续引用

当我们删除的是类的属性的时候并不会去调用__del__方法,所以我们先print出来然后才回去调用__del__方法,

应为__del__方法只会在内存释放的时候才回去调用到它

但是我们如果删除的是f1这个类的实例的话就会立即释放内存,del就会先于print被调用

原文地址:http://blog.51cto.com/853056088/2139300

时间: 2024-10-30 09:28:48

python的析构方法__del__的相关文章

python面向对象析构方法-----> __del__方法

1.什么时候用法析构方法. 在对象资源被释放的时候触发. 2.使用场景. 帮助清理资源,比如python解释器清理不掉的资源. 例子: class Foo: def __init__(self,x): self.x=x def __del__(self): #在对象资源被释放时触发 print('现在是__del__执行') f=Foo(100000) del f #这个步骤在释放资源,这个时候会触发函数中的__del__函数中定义的方法. print('====================

Python __析构方法__del__

class Foo: def __init__(self,x): self.x=x def __del__(self): #在对象资源被释放时触发 print('-----del------') print(self) f=Foo(100000)del fprint('=======================>')

类的析构方法__del__

析构方法: 语法: class 类名: def __del__(self): ... 说明: 析构方法在对象被销毁时被自动调用 python建议不要在对象销毁时做任何事情,因为销毁的时间难以确定 class Car: def __init__(self, info): self.info = info print("汽车对象", info, "被创建") def __del__(self): print("汽车对象", self.info, &q

python类 析构方法

对象被销毁时执行的操作.一般用于资源回收.Python有垃圾回收机制会自动调用__del__,也可自己调用. # -*- coding: UTF-8 -*- class Student: company = 'LOL' def __del__(self): print("销毁对象{0}".format(self)) s1 = Student()s2 = student() del s1 "销毁对象"s1和s2都会被调用,s2有回收机制调用. 原文地址:https:/

__del__() 析构方法和__call__() 方法

一:析构方法__del__(): 1 ''' 2 当对象在内存中被释放时,自动触发执行 3 不过一般不用我们释放,Python 解释器会自动释放 4 ''' 5 class DemoClass: 6 7 def __init__(self,name): 8 self.name = name 9 10 def __del__(self): 11 print("析构了") 12 13 14 if __name__ == "__main__": 15 demo = Dem

033.Python的__del__析构方法he__call__方法

一 __del__ 魔术方法(析构方法) 1.1 介绍 触发时机:当对象被内存回收的时候自动触发[1.页面执行完毕回收所有变量 2.所有对象被del的时候] 功能:对象使用完毕后资源回收 参数:一个self接受对象 返回值:无 1.2 页面执行完毕回收所有变量 class Plane(): def __init__(self,name): self.name = name def fly(self): print ("我的飞机是{}飞的很快".format(self.name)) de

[转]python self、类、构造和析构方法 简单学习

self可以理解为自己类似于C++中的this指针,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self python的类中有属性.方法:其中属性可以有私有和公有之分,方法可以对私有属性进行限定和保护,类似于C#中属性的功能. 方法也有私有和公有,__方法前面两个下划线 类,具有相似内部状态和运动规律的实体的集合(统称.抽象)具有相同属性和行为事物的统称,类是抽象的,使用时找到类的具体存在,使用这个具体存在--对象类是对象的模板  类:类名.属性.方法 class

知识点:构造和析构方法 __new__ , __init__ , __del__

1:__new__ 类创建对象的一个执行的方法,一般不需要重写这个函数.当继承的类是不可变,但是又想修改该对象. 基本语法  def __new__(cls ,[args,]]) ####写一个将字母全部大写的类#### class Capstr(str): def __new__(cls , string): string = string.upper() return str.__new__(cls , string) print(Capstr("marian")) ####写一个

__del__ 析构方法 __init__ 构造方法

# ### __del__ 析构方法 __init__ 构造方法 ''' 触发时机:当对象被内存回收的时候自动触发[1.页面执行完毕回收所有变量 2.所有对象被del的时候] 功能:对象使用完毕后资源回收 参数:一个self接受对象 返回值:无 ''' class LangDog(): def __init__(self,name): self.name = name def eat(self,something): print("可爱的小狼{},喜欢吃{}".format(self.