Python OOP類中的幾種函數(shù)或方法總結(jié)
概述
實例方法
- 使用實例調(diào)用時,默認傳遞實例本身到實例方法的第一個參數(shù)self
- 使用類調(diào)用時,必須傳遞一個實例對象到實例方法的第一個參數(shù)
靜態(tài)方法
- 使用實例調(diào)用和類調(diào)用效果相同;
類方法
裝飾器版:
- 使用實例調(diào)用和類調(diào)用效果相同;
classmethod(function)版:
- 在類中,盡量不要使用classmethod(function)實現(xiàn)類方法,會將其當做實例方法使用;
- 使用實例調(diào)用時,會默認傳遞實例本身到函數(shù)的第一個參數(shù),如果函數(shù)的參數(shù)個數(shù)為0,則報錯;
- 如果必須這樣做,就使用類調(diào)用.
普通函數(shù)
- 在類中,盡量不要定義普通函數(shù),會將其當做實例方法使用;
- 使用實例調(diào)用時,會默認傳遞實例本身到函數(shù)的第一個參數(shù),如果函數(shù)的參數(shù)個數(shù)為0,則報錯;
- 如果必須這樣做,就使用類調(diào)用.
總而言之,除了裝飾器版的類方法和靜態(tài)方法外,其它方法與函數(shù)均可看做是實例方法.
代碼與運行結(jié)果
class A(object): def instant_method(self,*args): print('實例方法',*args) @classmethod def class_method_01(clz,*args): """第一個參數(shù)為class,調(diào)用時自動傳遞""" print('類方法(裝飾器版)',*args) def class_method_02(*args): print('類方法(普通函數(shù)通過內(nèi)置函數(shù)classmethond(function)轉(zhuǎn)換版)',*args) classmethod(class_method_02) @staticmethod def static_method(*args): print('靜態(tài)方法',*args) def normal_function(*args): print('普通函數(shù)',*args) a=A() # 調(diào)用實例方法 a.instant_method('通過實例調(diào)用') A.instant_method(a,'通過類調(diào)用') # 調(diào)用裝飾器版類方法 a.class_method_01('通過實例調(diào)用') A.class_method_01('通過類調(diào)用') # 調(diào)用classmethod(function)版類方法 # 通過實例調(diào)用時,會默認傳遞實例本身到方法的第一個參數(shù) a.class_method_02('通過實例調(diào)用') A.class_method_02('通過類調(diào)用') # 調(diào)用靜態(tài)方法 a.static_method('通過實例調(diào)用') A.static_method('通過類調(diào)用') # 調(diào)用普通函數(shù) # 通過實例調(diào)用時,會默認傳遞實例本身到方法的第一個參數(shù) a.normal_function('通過實例調(diào)用') A.normal_function('通過類調(diào)用')
輸出
實例方法 通過實例調(diào)用
實例方法 通過類調(diào)用
類方法(裝飾器版) 通過實例調(diào)用
類方法(裝飾器版) 通過類調(diào)用
類方法(普通函數(shù)通過內(nèi)置函數(shù)classmethond(function)轉(zhuǎn)換版) <main.A object at 0x7f9b9b0486a0> 通過實例調(diào)用
類方法(普通函數(shù)通過內(nèi)置函數(shù)classmethond(function)轉(zhuǎn)換版) 通過類調(diào)用
靜態(tài)方法 通過實例調(diào)用
靜態(tài)方法 通過類調(diào)用
普通函數(shù) <main.A object at 0x7f9b9b0486a0> 通過實例調(diào)用
普通函數(shù) 通過類調(diào)用
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
python 創(chuàng)建彈出式菜單的實現(xiàn)代碼
這篇文章主要介紹了python 創(chuàng)建彈出式菜單的實現(xiàn)代碼的相關資料,需要的朋友可以參考下2017-07-07python mysql自增字段AUTO_INCREMENT值的修改方式
這篇文章主要介紹了python mysql自增字段AUTO_INCREMENT值的修改方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05TensorFlow安裝并在Pycharm搭建環(huán)境的詳細圖文教程
今天動手開始搭建TensorFlow開發(fā)環(huán)境,所以下面這篇文章主要給大家介紹了關于TensorFlow安裝并在Pycharm搭建環(huán)境的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-11-11python3實現(xiàn)網(wǎng)頁版raspberry pi(樹莓派)小車控制
這篇文章主要為大家詳細介紹了python3實現(xiàn)網(wǎng)頁版raspberry pi(樹莓派)小車控制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02解決Pyinstaller打包為可執(zhí)行文件編碼錯誤的問題
這篇文章主要介紹了解決Pyinstaller打包為可執(zhí)行文件編碼錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03