__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 = DemoClass("tom")
16     del demo
17
18     print("=============")
19 ‘‘‘
20     输出:
21         析构了
22         =============
23
24 ‘‘‘

二:"对象()" 调用的方法:__call__()

 1 class DemoClass:
 2
 3     def __call__(self, *args, **kwargs):
 4         print("I am here")
 5
 6
 7
 8 if __name__ == "__main__":
 9     demo = DemoClass()
10
11     demo()
12 ‘‘‘
13     构造方法的执行是由创建对象触发的,即 对象 = 类名();
14     而对于__call__()方法的执行时 由对象后加括号 即:对象()或类名()()
15
16     我们知道类本身也是个类对象,所以它加括号就是调用产生它的类(元类)的__call__() ,
17         它的__call__()方法返回个实例,所以叫实例化
18 ‘‘‘  输出:    I am here

原文地址:https://www.cnblogs.com/zach0812/p/11311152.html

时间: 2024-10-13 13:59:42

__del__() 析构方法和__call__() 方法的相关文章

内置函数补充,__str__方法、__del__方法 和 __call__方法和元祖

一 .内置函数补充 1.isinstance函数: isinstance(obj,cls)检查obj是否是类 cls 的对象 使用该函数来判断一个函数的类型 2. issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass issubclass(Bar, Foo) 3.下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 clas

类的特殊成员特殊方法__init__;__call__;__del__....

1.  类:  后面加()   ===>实例化一个对象,并且执行__init__方法 2. 对象:后面加()  ===>执行__call__方法 class Foo: def __init__(self): print("init") def __call__(self, *args, **kwargs): print("call") return 1 r = Foo() # 实例化一个对象,执行__init__方法 r() # 在一个对象后面加括号,执

__init__、__new__、__call__ 方法

__init__方法 __init__方法负责对象的初始化,系统执行该方法前,其实该对象已经存在了,要不然初始化什么东西呢?先看例子: # class A(object): python2 必须显示地继承objectclass A:    def __init__(self):        print("__init__ ")        super(A, self).__init__()    def __new__(cls):        print("__new_

简析 __init__ __new__ __call__ 方法

任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就是 __init__ 方法,而 __new__ 和 __call__ 使用较少 __init__方法 该方法负责对象的初始化,系统执行该方法前,其实该对象已经存在了,要不然初始化什么呢?先看例子: # class A(object): python2 必须显示第继承object class A: d

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

python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True

__del__ 析构方法 __init__ 构造方法

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

(一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象

一:__del__方法(析构函数)和垃圾回收机制 __del__方法称为“析构方法”,用于实现对象被销毁时所需的操作.比如:释放对象 占用的资源,例如:打开的文件资源.网络连接等. Python实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器 调用__del__方法. 我们也可以通过del 语句删除对象,从而保证调用__del__方法. 系统会自动提供__del__方法,一般不需要自定义析构方法. [操作] #析构函数 class Person: def __del__(s

python 之简单聊聊 析构函数和特殊的__call__方法

# -*- coding: utf-8 -*- """ Created on Sun Nov 13 23:19:03 2016 @author: toby """ #知识点:析构函数和特殊的__call__方法 ''' 析够函数: 其中的"__del__"就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数, 另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这 样可以用来释放内存空