__str__和__del__

__str__

str 会在打印对象时自动触发,然后将返回值(必须是字符串类型)当做本次打印的结果输出

class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        print('运行了打印功能')
        return f'{self.name}   {self.age}'
obj = People('小辣椒同学', 18)

print(obj.__str__())
# 运行了打印功能
# 小辣椒同学18

# 打印对象
print(obj)
# 运行了打印功能
# 小辣椒同学18

__del__

在清理对象时触发,会先执行该方法,当程序运行时不仅占用了内存还系统资源值,当程序不需要某些系统资源时,清理对象前告诉操作系统回收相关系统资源(打开的文件)

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.x = open('a.txt',mode='w')

        # self.x = 占据的是操作系统资源

    def __del__(self):
		print('run...')
        # 发起系统调用,告诉操作系统回收相关的系统资源
        self.x.close()


obj = People('小垃圾同学',18)
print('程序运行结束')
#打印'程序运行结束',程序运行结束,清理对象obj,触发__del__执行,打印'run...''
'''
程序运行结束
run...
'''


del obj # obj.__del__()
print('程序运行结束')
#del obj,触发__del__执行,打印'run...,然后'打印'程序运行结束',程序运行结束。

 

posted @ 2025-01-10 14:22  向闲而过  阅读(7)  评论(0)    收藏  举报