析构方法
相信大家都有这样的经历:我们进入一家商店的时候经常会听到一个喇叭播放说,欢迎光临,当我们出商店的时候也会提醒说欢迎光临,现实中这是通过感应器触发的,但是在程序中我们是如何触发实现呢,这就是我们要介绍的,析构函数
概述
当一个对象被删除或者被销毁时,python解释器也会默认调用一个方法,这个方法为__del__()方法,也称为析构方法
定义
程序执行结束自动调用__del__方法
可以看到输出结果为:
##析构方法肯定是在类的内部
class Animal:
def __init__(self,name):
self.name=name
print('这是构造初始化方法')
pass
def __del__(self):
# 主要的应用就是来操作 对象的释放 一旦释放完毕 对象便不能在使用
print('当在某个作用域下面 没有被使用【引用】的情况下 解析器会自动的调用此函数 来释放内存空间')
print('这是析构方法')
print('%s 这个对象 被彻底清理了 内存空间也释放了'%self.name)
pass
cat=Animal('小花猫')
# del cat #手动的去清理删除对象 会指定__del__函数
print(cat.name)
##input('程序等待中.....')#加上这个时后对象就不会被释放,因为还没有被使用
# print('*'*40)
# dog=Animal('柯基小狗')
*当在某个作用域下面 没有被使用【引用】的情况下 解析器会自动的调用此函数 来释放内存空间
就是程序执行完后,这个对象没有用了,就会删除释放空间
*对象被删除时也会自动调用__del__方法,如下代码中我们利用del手动删除dog对象
就是说手动删除时,就会自动调用del方法,本来还没执行的del方法就会被执行
从下面的输出结果中,我们可以看出,当我们调用del dog 这条语句时__del__方法被执行了
*对象一旦被释放便不可以再被使用
总结
- 当整个程序脚本执行完毕后会自动调用__del__方法
- 当对像被手动销毁时也会自动调用 __del__ 方法
- 析构函数一般用于资源回收,利用__del__方法销毁对象回收内存等资源
单继承
在python当中展现面向对象的三大特征:封装,继承和多态
封装:指把内容封装到某个地方,便于后面的使用,
需要:
- 把内容封装到某个地方
- 从另外一个地方去调用被封装的内容
对于封装来说,其实就是使用初始化构造方法init将内容封装到对象中,然后通过对象或者self间接的获取被封装的内容
继承:和现实生活中的继承是一样的,就是子可以继承父的内容【属性和行为】(爸爸有的儿子都有,相反,儿子有的爸爸不一定有),对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一去实现,这样可以极大的提高效率,减少代码的重复编写,精简代码的层级结构,便于拓展
概述
在现实生活中,继承一般指的是子女继承父辈的财产。在面向对象中同样有继承,例如:
猫的方法:喵喵叫、吃、喝
狗的方法:汪汪叫、吃、喝
如果给猫和狗都创建一个类,那么猫和狗的所有方法都要写,如:
写法
class 类名(父类):
‘’‘
子类就可以继承父类中公共的属性和方法
’‘‘
pass
上面的代码中我们可以发现,吃,喝方法时一样的,但是写了两遍。
如果用继承的思想,我们可以这样:猫和狗都是动物(动物有吃,喝的方法)
所以,对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法
class Animal:
def eat(self):
'''
吃
:return:
'''
print('吃饭了')
pass
def drink(self):
'''
喝
:return:
'''
pass
class Dog(Animal): #继承了Animal 父类 此时dog就是子类
def wwj(self):
'''
子类独有的实现
:return: