python類方法、靜態方法

類方法、靜態方法:br/>靜態方法定義:
@staticmethod修飾
參數不用self
br/>靜態方法特性:
不能引用或訪問實例屬性
可以通過類.類變量訪問類屬性
靜態方法調用:
可以用類、類實例調用
靜態方法本質:
在類中的一個普通函數
使面向對象程序中函數歸屬於類,易於代碼管理
靜態方法的用法:
與類相關,但不依賴或改變類與實例
創建不同的實例
把類相關工具方法放入類中
類方法:
定義方法:
@classmethod
必須提供參數cls
訪問特性:
不能引用或訪問實例屬性
調用方法:
可以用類、類實例調用
繼承特性:
繼承時,傳入的變量cls是子類,而非父類
用途:
與類相關,但不依賴或改變類的實例
工廠方法,創建類實例,完成有關預處理
在類內調用靜態方法時不用硬編碼類名

# -*- coding=utf-8 -*-
class Washer:
    company = "Le xi"
    def __init__(self,water=10,scour=2):
        self._water = water
        self.scour = scour
        self.year = 2010
        pass

    @staticmethod
    def spins_ml(spins):
        print("company:",Washer.company)
        return spins * 0.4

    @classmethod
    def get_washer(cls,water,scour):
        return cls(water,Washer.spins_ml(scour))

    @property
    def water(self):
        return self._water

    @water.setter
    def water(self,water):
        if 0 <= water <= 500:
            self._water = water
            pass
        else:
            print("輸入的值有誤!")
            pass
        pass

    @property
    def total_year(self):
        return 2015-self.year

    def set_water(self,water):
        self.water = water
        pass

    def set_scour(self,scour):
        self.scour = scour
        pass

    def add_water(self):
        print('Add water:',self.water)
        pass

    def add_scour(self):
        print('Add scour:',self.scour)
        pass

    def start_wash(self):
        self.add_water()
        self.add_scour()
        print('Start wash...')
        pass
    pass

if __name__ == '__main__':
    print(Washer.spins_ml(8))
    w = Washer()
    print(w.spins_ml(8))
    w = Washer(200,Washer.spins_ml(9))
    w.start_wash()
    w = Washer.get_washer(200, 10)
    w.start_wash()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章