(一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象
一:__del__方法(析构函数)和垃圾回收机制
__del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象 占用的资源,例如:打开的文件资源、网络连接等。
Python实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器 调用__del__方法。
我们也可以通过del 语句删除对象,从而保证调用__del__方法。 系统会自动提供__del__方法,一般不需要自定义析构方法。
【操作】
#析构函数 class Person: def __del__(self): print('销毁对象:{0}'.format(self)) p1 = Person() p2 = Person() del p2 #删除对象,以保证能够调用__del__方法 print('程序结束')
运行结果:
销毁对象:<__main__.Person object at 0x0000026103149320>
程序结束
销毁对象:<__main__.Person object at 0x000002610150A208>
二:__call__方法和可调用对象
定义了__call__方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用。
【操作】
#测试__call__方法,可调用对象 class salaryAccount: '''工资计算类''' def __call__(self, salary): yearSalary = salary*12 daySalary = salary//30 hourSalary = daySalary//8 return dict(monthSalary=salary,yearSalary=yearSalary,daySalary=daySalary,hourSalary=hourSalary) s = salaryAccount() print(s.__call__(20000)) print(s(20000)) #可以向调用函数一样调用对象的__call__方法
运行结果:
{'monthSalary': 20000, 'yearSalary': 240000, 'daySalary': 666, 'hourSalary': 83}
{'monthSalary': 20000, 'yearSalary': 240000, 'daySalary': 666, 'hourSalary': 83}
posted on 2019-05-11 23:35 JACK#zhang 阅读(149) 评论(0) 编辑 收藏 举报