1. 程式人生 > >(一)Python入門-6面向對象編程:04__del__方法(析構函數)和垃圾回收機制-__call__方法和可調用對象

(一)Python入門-6面向對象編程:04__del__方法(析構函數)和垃圾回收機制-__call__方法和可調用對象

int 例如 垃圾回收 編程 nth object () 語句 計數

一:__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__方法和可調用對象