码迷,mamicode.com
首页 > 编程语言 > 详细

(一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象

时间:2019-05-12 01:49:52      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:pre   count   pytho   删除对象   python实现   __call__   释放   object   format   

一:__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}

(一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象

标签:pre   count   pytho   删除对象   python实现   __call__   释放   object   format   

原文地址:https://www.cnblogs.com/jack-zh/p/10847276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!