类内置方法
1. __ str__
前后带杠杠的都是特殊的内置函数 会在某些时机自动执行 一般情况我们不应该直接调用他们
当我们需要自定义打印显示内容时 就需要实现__str__方法
该方法 必须 返回一个字符串 返回的是什么 打印出来就是什么class Test: def __init__(self,name): self.name = name def __str__(self): print("str run....") return self.namet = Test("安米")print(t)#上下两个是一样的..print(t.__str__())# 在讲一个对象转换字符串时 本质就是在调用这个对象 __str__方法print(str(t))
2. __ dir__
- 当对象被从内存中删除时会自动执行
- 另一种情况时 程序员手动删除了这个对象 也会自动执行
什么时候使用它
在python中 有自动内存管理机制 所以 python自己创建的数据 不需要我们做任何操作 但是有一种情况 我们使用python打开了一个不属于python管理的数据 (比如打开了一个文件 这个文件一定是操作系统在打开 会占用系统内存 而python解释器无法操作系统内存的)所以 当你的python解释器运行结束后 文件依然处于打开状态 这时候就需要使用__del__来关闭系统资源
简单地说 当程序运行结束时 需要做一些清理操作 就使用__del__
__del__也称之为 析构函数
即:分析构造 并拆除这个对象
class Student: def __del__(self): print("对象被删除了....")stu = Student()# 手动删除 立即执行__del__del stuimport timetime.sleep(5)print('太迟了,对象已被删除')
'
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()
3. exec
"""
exec execute的缩写 表示执行的意思其作用 是帮你解析执行python代码 并且将得到的名称 存储到制定的名称空间 解释器内部也是调用它来执行代码的
"""
# 参数一 需要一个字符串对象 表示需要被执行的python语句 # 参数二 是一个字典 表示全局名称空间 # 参数三 也是一个字典 表示局部名称空间globalsdic = {}localsdic = {}exec("""aaaaaaaaaaaaaaaaaaaa = 1bbbbbbbbbbbbbbbbbbbbbbbbbbbb = 2def func1(): print("我是func1")""",globalsdic,localsdic)# 如果同时制定了 全局和局部 则 会字符串中包含名称 解析后存到局部中# print(globalsdic)print(localsdic)localsdic["func1"]()# # 如果只传了一个传参数 则 将字符串中包含名称 解析后存到全局中# exec("""# aaaaaaaaaaaaaaaaaaaa = 1# bbbbbbbbbbbbbbbbbbbbbbbbbbbb = 2## """,localsdic)