内置功能之__str__与__del__

一、何为内置功能:以__功能名__的形式定义在类的内部的功能,这些功能会在特定情况下自发执行。

二、内置功能的作用:创造对象时可以对之进行特殊定制。

三、内置功能之__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__功能,以便在程序结束时能自动释放系统内存的占用

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12709871.html