類方法、靜態方法:br/>靜態方法定義:
@staticmethod修飾
參數不用selfbr/>靜態方法特性:
不能引用或訪問實例屬性
可以通過類.類變量訪問類屬性
靜態方法調用:
可以用類、類實例調用
靜態方法本質:
在類中的一個普通函數
使面向對象程序中函數歸屬於類,易於代碼管理
靜態方法的用法:
與類相關,但不依賴或改變類與實例
創建不同的實例
把類相關工具方法放入類中
類方法:
定義方法:
@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()