python中函數過載和重寫

2020-08-12 16:28:45

python 中的過載

在python中,具有過載的思想卻沒有過載的概念。所以有的人說python這麼語言並不支援函數過載,有的人說python具有過載功能。實際上python程式設計中具有過載的目的缺無過載的行爲,或者說是python並不需要過載!

python是一門動態語言,不需要宣告變數型別,函數中可以接受任何型別的參數也就無法根據參數型別來支援過載,python沒有必要去考慮參數的型別問題,這些都可以在函數內部判斷處理,並無必要去在寫一個函數。python 有多種傳參方式,預設參數/可變參數/可變關鍵字參數可以處理常式參數中參數可變的問題。

python3.4中增加的過載機制 機製

如果你不用過載就會渾身難受的話
那麼在python3.4中提供有一個轉發機制 機製來實現過載

'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:778463939
尋找有志同道合的小夥伴,互幫互助,羣裡還有不錯的視訊學習教學和PDF電子書!
'''
from functools import singledispatch  
@singledispatch
def function(obj):
    print('%r'%(obj))
        
@function.register(int)
def function_int(obj):
    print('Integer: %d'%(obj))
   
@function.register(str)
def function_int(obj):
    print('String: %s'%(obj))
   
@function.register(list)
def function_list(obj):
    print('List: %r'%(obj))
   
   
if __name__ == "__main__":
     function(1)
     function('hello')
     function(range(3))
     function(object)

重寫

子類不想原封不動地繼承父類別的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。