python中類方法,靜態方法和實例方法的作用和區別

class A(object):
    # 構造函數
    def __init__(self, title1):
        self.title = title1
        print(self.title)

    # 實例函數
    def foo(self, title2):
        print(title2)

    # 靜態函數
    @staticmethod
    def static_foo():
        print("靜態方法")

    # 類函數
    @classmethod
    def cls_foo(cls):
    	cls.foo(a,"類函數調用實例函數")
        print("類方法")

構造函數 __ init __(self)
主要用於類傳參

a = A(“構造函數”)
#title1=“構造函數”

實例方法 foo(self,title2)
主要用於在類中封裝一個額外的功能

第一個參數必須是self,一般情況下調用只能用實例化對象調用,不能用類調用,但是非要用類調用時,需要將實例化對象傳遞給self(適用於3.x Python)
a.foo(“實例函數”) #實例化調用
A.foo(a,“實例函數類調用”)

靜態方法 static_foo()
主要用於在類中封裝一個額外的功能,但是使用時我們並不希望調用的時候還先要創建實例化對象,與類本身沒有聯繫,相當於類中一個獨立的函數

創建時用@staticmethod裝飾器裝飾,聲明爲靜態函數,可以用類調用也可以用實例化對象調用
a.static_foo() #實例化對象調用
A.static_foo() #類調用(常用)

類方法 cls_foo(cls)
主要將類當做參數進行了傳遞,相當於將類當成了對象,可以調用該類中的所有方法

創建時用@classmethod裝飾器裝飾,聲明爲類函數,第一個參數必須爲cls,可以用類調用也可以用實例化對象調用
a.cls_foo() #實例化對象調用
A.cls_foo() #類調用(常用)

總結:
1.實例方法,靜態方法,類方法三者中除了實例方法被類調用時要將實例化對象傳遞給 self外,另外兩個都可以直接用類或者是類的實例化對象調用。
2.類方法和靜態方法主要用於不創建實例化對象的情況下,因爲如果每次調用類中的方法時都創建實例化對象,會對系統造成很大的壓力,造成系統資源浪費
3.實例方法第一個參數爲self,靜態方法與類無關聯,類方法第一個參數爲cls,相當於將類當做對象進行了傳遞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章