# 面向對象是非常重要的! # 抽象,是個思想,結構 # 小明 小紅 小雨 都是人 # 海爾洗衣機 海東洗衣機 海西洗衣機 都是洗衣機 # 貓 狗 熊貓 都是動物 # 藍圖 # # class WashingMachine: # 類名一般是大駝峰 # pass # # 特征是屬性 # age = 2 ...
# 面向對象是非常重要的! # 抽象,是個思想,結構 # 小明 小紅 小雨 都是人 # 海爾洗衣機 海東洗衣機 海西洗衣機 都是洗衣機 # 貓 狗 熊貓 都是動物 # 藍圖 # # class WashingMachine: # 類名一般是大駝峰 # pass # # 特征是屬性 # age = 20 # # 行為是方法 # def # 先有類,後有對象 # 做一張藍圖,生成洗衣機 class WashingMachine: # 洗衣機 width = 595 height = 850 # 功能:會洗衣服 def canDoLaundry(self): print('會洗衣服') # 生成對象 haier = WashingMachine() # 獲取屬性 print(haier.height) print(haier.width) haier.canDoLaundry() # 添加屬性 haier.color = 'red' print(haier.color) # 修改屬性 haier.height = 800 print(haier.height)
運行後得:
# 如果說 class 是 英雄 # 那麼可以說 魔法方法 是英雄的 被動技能 自動生效 基於一定的條件來觸發 # 重構->重命名 修改某一範圍的所有特定變數名稱,一般選擇當前文件 # 魔法方法 __xxx__() print('魔法方法') # # add str init del class WashingMachine: # 洗衣機類 def __init__(self, width, height): # 初始化屬性 self.width = width self.height = height def __add__(self, other): # 當執行加法時自動觸發 self.width += other self.height += other return self # 感覺是迭代,返回 對象 ,就可以加多個數 def __str__(self): # 當使用print時觸發 """海爾說明書""" return f'高度為:{self.height}\n寬度為:{self.width}' def __del__(self): # 當刪除時觸發 print('del魔法方法被觸發了') haier = WashingMachine(850, 595) # 觸發__init__ haier + 2 + 3 # 觸發__add__ print(haier) # 觸發__str__ del haier # 觸發__del__
# 私有屬性 在屬性名稱的前面加一個下劃線 # # 烤地瓜 紅薯 class SweetPotato: def __init__(self): """初始化""" self._times = 0 self._status = '生的' self._seasoning = [] # 加的調料 def roasted_Sweet(self, times): # 烤地瓜 """烤地瓜""" # 0-2分鐘是生的 2-5是半生 5-8剛剛好 8分鐘以上烤焦了 self._times += times # 可能烤了之後再次烤 if 0<= self._times <= 2: self._status = '生的' elif 3 <= self._times <= 5: self._status = '半生' elif 6 <= self._times <= 8: self._status = '剛剛好' elif self._times >= 9: self._status = '烤焦了' def add_seasoning(self, *season): # 增加調料 這有個不定長傳參 """增加調料""" for i in season: self._seasoning.append(i) def __str__(self): # 查看紅薯的狀態 return f'紅薯烤的時間:{self._times}分鐘\n' \ f'紅薯的狀態是:{self._status}\n' \ f'紅薯目前的調料是:{" ".join(self._seasoning)}' sweet1 = SweetPotato() sweet1.add_seasoning('番茄醬', '孜然') sweet1.roasted_Sweet(3) sweet1.roasted_Sweet(3) sweet1.add_seasoning('番茄醬', '孜然') print(sweet1)
# 今日練習 ''' 1)定義名為MyTime(我的時間)的類 2)其中應有三個實例變數 時hour 分minute 秒second 3)對時分秒進行初始化,寫入__init__()中 4)定義方法get和set方法, get方法獲取時間,set可以設置時間 5)調用set設置時間 調用get輸出時間 ''' print() print('今日練習') class MyTime: def __init__(self, hour, minute, second): """初始化""" self.hour = hour self.minute = minute self.second = second def set(self, h, m, s): """時間變化""" self.hour += h self.minute += m self.second += s def get(self): """輸出時間""" print(f'時間是{self.hour}小時{self.minute}分鐘{self.second}秒') data = MyTime(23, 9, 1) data.set(0, 1, 59) data.get()