__str_和__del__--day26
__str_和__del__
"""
_
前后带杠杠的都是特殊的内置函数 会在某些时机自动执行 一般情况我们不应该直接调用他们
当我们需要自定义打印显示内容时 就需要用到__str__方法
该方法必须返回一个字符串 返回的是什么 打印出来就是什么
"""
class Test:
def __init__(self,name):
self.name = name
def __str__(self):
print("str run....)#查看是否执行
return self.name
t = Test("安米")
print(str(t))
__del__
"""
__del__
当对象被从内存中删除时会自动执行
另一种情况时 程序员手动删除了这个对象 也会自动执行
什么时候使用它
在python中 有自动内存管理机制 所以 python自己创建的数据 不需要我们做任何操作
但是有一种情况 我们使用python打开了一个不属于python管理的数据
比如打开了一个文件 这个文件一定是操作系统在打开 会占用系统内存 而python解释器无法操作系统内存的
所以 当你的python解释器运行结束后 文件依然处于打开状态 这时候就需要使用__del__来关闭系统资源
简单地说 当程序运行结束时 需要做一些清理操作 就使用__del__
__del__也称之为 析构函数
分析构造 并拆除这个对象
"""
class TextFile:
def __init__(self,filepath,mode="rt",encoding="utf-8"):
self.file = open(filepath,mode=mode,encoding=encoding)
def read(self):#读取文件
return self.file.read()
def write(self,text):#写入文件
self.file.write(text)
# 该方法其实就是一个通知性质 仅仅是告诉程序员 对象即将被删除
def __del__(self):
self.file.close()# 在这里关闭系统的文件
tf = TextFile("要打开的文件")
print(tf.read())
# tf.file.close() 不需要手动关闭了 在对象删除时会自动关闭
tf.read()