吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1103|回复: 0
收起左侧

[Python 转载] 【笔记】__del__()析构方法和__call__()方法

[复制链接]
cccyyys 发表于 2021-6-25 09:34
__del__()析构方法
__del__方法称为析构方法,用于实现对象被销毁是所需的操作。比如释放对象所占用的资源,例如:打开的文件资源、网络连接等
Python实现自动的垃圾回收,当对象没有被引用时(引用计数是0)由垃圾回收器调用__del__方法。我们也可以通过del语句删除对象,从而保证调用__del__方法。
系统会自动提供__del__方法,一般不需要自定义析构方法。
[Python] 纯文本查看 复制代码
class Person:

    def __del__(self):
        print('销毁对象{0}'.format(self))

s1 = Person()
s2 = Person()
del s2
print("程序结束")

运行结果:销毁对象<__main__.Person object at 0x000002192EFA4A90>
程序结束
销毁对象<__main__.Person object at 0x000002192EFA4AC0>
这是测试一下析构函数,其中第一个销毁对象时销毁的s2,第二个是s1。
__call__()方法
定义__call__()方法的对象,称为“可调用对象”,即该对象可以像函数一样使用“小括号“被调用。
[Python] 纯文本查看 复制代码
class SalaryAccount():
    '''工资计算'''
    def __call__(self,salary):
        yearSalary = salary*12
        daySalary = salary//22.5
        hourSalary = daySalary//8

        return dict(yearSalary=yearSalary,monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)
s = SalaryAccount()
print(s(10000))

运行结果:{'yearSalary': 120000, 'monthSalary': 10000, 'daySalary': 444.0, 'hourSalary': 55.0}
这是定义了一个__call__()方法,使得对象可以直接调用。

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表