#构造函数是在对象被创建是自动调用的方法,用来完成初始化操作
class Test(object):
def __init__(self, name):
self.name = name
print('这是构造函数') def say_hi(self):
print('hell, %s' % self.name) def __del__(self):
print('这是析构函数') obj = Test('bigberg') obj.say_hi() #del obj

结果:

上面是python  li2.py运行结果

如果在IDLE中直接F5运行结果如下:

================ RESTART: D:/ADB/kuaidou0102/kuaidou1210/li2.py ================
这是构造函数
hell, bigberg
>>>

以上两个结果不同,原因是在IDLE中程序是运行结束了,但实例化的对象object仍然存在,仍可以使用,继续操作如下:

>>> obj
<__main__.Test object at 0x0000000002F49E88>
>>>

说明该对象是存在的,所以没有执行析构函数的功能

只有执行了:del  obj才自动执行析构函数,所以在IDLE中将最后一行的#去掉,才会显示如下结果:

================ RESTART: D:/ADB/kuaidou0102/kuaidou1210/li2.py ================
这是构造函数
hell, bigberg
这是析构函数
>>>

总结 :

1.构造函数是类实例化时自动执行的函数,一般用来执行初始化操作

2.析构函数是实例化删除后自动执行的函数,一般用来清除在实例化所用的变量等,用以释放内存,供计算机新运行的程序使用

析构函数是为你的类创建的对象处理后事用的,所以它的调用时机就类创建出来的对象的生命周期结束的时候。

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

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

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

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

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

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

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

python 构造函数 析构函数的更多相关文章

  1. C++构造函数/析构函数 设置成private的原因

    C++构造函数/析构函数 设置成private的原因 标签(空格分隔): c/c++ 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该 ...

  2. C++反汇编第一讲,认识构造函数,析构函数,以及成员函数

    C++反汇编第一讲,认识构造函数,析构函数,以及成员函数 以前说过在C系列下的汇编,怎么认识函数.那么现在是C++了,隐含有构造和析构函数 一丶认识构造函数 高级代码: class MyTest { ...

  3. C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数

    C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...

  4. Python 构造函数、 Python 析构函数、Python 垃圾回收机制

    构造函数与析构函数 构造函数: 用于初始化类的内容部状态,Python提供的构造函数式 __init__(); 也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里 ...

  5. python构造函数和析构函数

    构造函数和析构函数 关注公众号"轻松学编程"了解更多. 1.构造方法的使用 ​ 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为__init__()的特殊方法(构造方 ...

  6. C++ 中的类构造函数 & 析构函数

    类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置 ...

  7. c++基础语法 构造函数 析构函数 类的组合

    1 构造函数 1.不能指定任何返回值,甚至连void都不能有. 2.与Java不同,c++不同new对象,对于无参的构造函数声明对象时括号应该省略. 2 析构函数 1. 前加~,不能有参数,不能有返回 ...

  8. c++类大四个默认函数-构造函数 析构函数 拷贝构造函数 赋值构造函数

    每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数).对于任意一个类A,如果不编写上述函数,C++编译器将自动为A 产生四个缺省的函数,例如: A ...

  9. python 构造函数作用

    1. 构造函数的作用        构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数.一般来说, 构造函数有以下三个方面的作用:        ...

随机推荐

  1. DDD中聚合、聚合根的含义以及作用

    聚合与聚合根的含义 聚合: 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 , 举个例子, 社会是由一个个的个体组成的,象征着我们每一个人.随着社会的发展,慢慢出现了社团.机构.部门等组织,我们 ...

  2. 使用TENSORRT和NVIDIA-DOCKER部署深部神经网络

    使用TENSORRT和NVIDIA-DOCKER部署深部神经网络 当前部署工作流

  3. Waymo的激光雷达计划:进展如何?

    Waymo的激光雷达计划:进展如何? Waymo's Lidar Plan: How's It Working out? 许多自动驾驶汽车(AV)开发商一直在热烈追求激光雷达技术,这一技术之所以重要, ...

  4. MapReduce——客户端提交任务源码分析

    计算向数据移动 MR程序并不会在客户端执行任何的计算操作,它是为计算工作做好准备,例如计算出切片信息,直接影响到Map任务的并行度. 在Driver中提交任务时,会写到这样的语句: boolean r ...

  5. vulhub-struct2-s2-005

    0x00 漏洞原理   s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码).O ...

  6. UF_TRNS 变换相关

    Open C uf5940uf5941uf5942  矩阵乘积变换uf5943  平移变换uf5944  缩放变换uf5945  旋转变换uf5946  镜像变换uf5947  实现变换,根据变换矩阵 ...

  7. SpringBoot 结合 Spring Cache 操作 Redis 实现数据缓存

    系统环境: Redis 版本:5.0.7 SpringBoot 版本:2.2.2.RELEASE 参考地址: Redus 官方网址:https://redis.io/ 博文示例项目 Github 地址 ...

  8. 2021年Wordpress博客装修美化(二)

    使用古腾堡来排版页面 废话不多说,我们直接开始吧,今天主要来聊聊如何使用Wordpress自带的可视化页面编辑器.我相信只有驾驭最基础的可视化排版,后面才能对高级版本的扩展可视化编辑器elemento ...

  9. canvas小画板——(3)笔锋效果

    画线准备 准备一个canvas <canvas id="canvasId" width="1000" height="800"> ...

  10. 浏览器中js怎么将图片下载而不是直接打开

    网上找了好多方法都是不能用的,经过试验在Chrome中都是直接打开. 经过自己的摸索,找到了一套能用的解决方案 var database = "data:image/jpg;base64,& ...