python中的构造函数_python 构造函数 析构函数

#构造函数是在对象被创建是自动调用的方法,用来完成初始化操作

classTest(object):def __init__(self, name):

self.name=nameprint('这是构造函数')defsay_hi(self):print('hell, %s' %self.name)def __del__(self):print('这是析构函数')

obj= Test('bigberg')

obj.say_hi()#del obj

结果:

3c58ad7bbdb1f953c39628c0fa2fb41f.png

上面是python  li2.py运行结果

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

================ RESTART: D:/ADB/kuaidou0102/kuaidou1210/li2.py ================

这是构造函数

hell, bigberg

>>>

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

>>> obj

>>>

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

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

================ RESTART: D:/ADB/kuaidou0102/kuaidou1210/li2.py ================

这是构造函数

hell, bigberg

这是析构函数

>>>

总结 :

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

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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值