一、何为内置功能:以__功能名__的形式定义在类的内部的功能,这些功能会在特定情况下自发执行。
二、内置功能的作用:创造对象时可以对之进行特殊定制。
三、内置功能之__str__:在打印对象时会自动触发,然后将调用该功能得到的返回值作为内容打印出来。
class Human: def __init__(self, name, age): self.name = name self.age = age obj = Human('tom', '18') print(obj) # 类体内未定义__str__,会按照默认父类 object 的__str__执行,结果为 <__main__.Human object at 0x0000022CAE9E45E0> class Human: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return self.name # 自定义了__str__,使其返回对象的 'name' 属性值 obj = Human('tom', '18') print(obj) # 打印对象,即打印的是__str__的返回值,即对象的 'name' 属性值,结果为 tom
四、内置功能之__del__:在清除对象时,先于清除对象的操作触发该功能。
class Human: def __init__(self, name, age): self.name = name self.age = age def __del__(self): print('删你妹') obj = Human('tom', '18') del obj print('程序即将结束') # 删除 obj 前会触发类里面定义的__del__功能,结果为 删你妹 ===> 程序即将结束 class Human: def __init__(self, name, age): self.name = name self.age = age def __del__(self): print('删你妹') obj = Human('tom', '18') print('程序即将结束') # 不手动删除 obj 程序结束时会自动回收内存中的 obj,所以也会触发__del__功能,结果为 程序即将结束 ===> 删你妹 class Human: def __init__(self, name, age): self.name = name self.age = age self.f = open(r'00 笔记.txt','rb') # 创建的对象会有一个文件句柄的属性 def __del__(self): self.f.close() # 因为程序结束只会回收应用程序的内存资源,对系统的内存占用不会自动释放,所以此处需要自定义__del__功能,以便在程序结束时能自动释放系统内存的占用