Python的例項方法、類方法和靜態方法之間的區別與聯絡
阿新 • • 發佈:2018-11-10
Python的例項方法、類方法和靜態方法
class Test: def test1(self): print('test......') @classmethod def test2(cls): print('test2......classmethod') @staticmethod def test3(): print('test3......staticmethod') t = Test() t.test1() t.test2() t.test3() # 類訪問例項方法時,必須要把例項物件作為引數傳進去. Test.test1(t) Test.test2() Test.test3()
執行結果:
test......
test2......classmethod
test3......staticmethod
test......
test2......classmethod
test3......staticmethod
在類裡面定義的函式就是方法,類方法需要@ classmethod 修飾並且有個隱藏引數 cls,例項方法必須有個引數 self, 靜態方法必須有 @staticmethod修飾。
類和例項都可以訪問類方法、例項方法和靜態方法,唯一需要注意的是:類訪問例項方法時需要帶引數self.
在類方法中,不管是使用例項還是類呼叫方法,都會把類作為第一個引數傳遞進來,這個引數就是類本身。如果繼承了這個使用類方法的類,該類的所有子類都會擁有了這個方法,並且這個方法會自動指向子類本身,這個特性在工廠函式中是非常有用的。靜態方法是和類與例項都沒有關係的,完全可以使用一般方法代替,但是使用靜態方法可以更好的組織程式碼,防止程式碼變大後變得比較混亂。類方法是可以替代靜態方法的。靜態方法不能在繼承中修改。