__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()

posted @ 2018-12-19 17:38  WenChen-0o0  阅读(102)  评论(0编辑  收藏  举报