Python面向對象編程(3)——類方法、靜態方法

類方法、靜態方法
1 靜態方法
     定義形式:@staticmethod裝飾,參數不需要self     
     靜態方法無法引用或訪問實例屬性,可通過類.類變量訪問類屬性
     可以採用類、類實例進行調用
     與類相關,但不依賴和改變類和實例
     類相關工具方法放在其中,使函數歸於類,便於代碼的管理
class StaticMethodDemo:
    b=10
    def __init__(self,a=0):
        self.a=a
    @staticmethod
    def staticFun():
        print(StaticMethodDemo.b)
#         print(self.a)
if __name__ == '__main__':
    smd=StaticMethodDemo()
    StaticMethodDemo.staticFun()
    smd.staticFun()

2 類方法
     定義形式:@classmethod,需要帶cls參數,表示自身這個類
     無法引用或訪問實例屬性
     可以採用類、類實例進行調用
     與類相關,但不依賴和改變類和實例
     工廠方法,創建類實例,完成有關預處理
     類內調用靜態方法,不需要硬編碼類名
class ClassMethodDemo:
    b=10
    def __init__(self,a=0):
        self.a=a  
    @staticmethod
    def staticFun():
        return ClassMethodDemo.b
    @classmethod
    def classFun(cls,c=30):
        return cls(cls.staticFun()*c)   #返回類實例
#         print(self.a)
if __name__ == '__main__':
    cmd=ClassMethodDemo.classFun(2)
    print(cmd.a);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章