1. 類的約束 1. 寫一個父類. 父類中的某個方法要拋出一個異常 NotImplementedError (重點) 2. 抽象類和抽象方法 2. 異常處理. 3. MD5 ...
1. 類的約束
1. 寫一個父類. 父類中的某個方法要拋出一個異常 NotImplementedError (重點)
2. 抽象類和抽象方法
# 語法 # from abc import ABCMeta, abstractmethod # class Base(metaclass = ABCMeta): # @abstractmethod # def fangfa(self):pass # 抽象類 from abc import ABCMeta, abstractmethod # 抽象類不能創建對象 class Animal(metaclass=ABCMeta): # 寫完這個東西就是抽象類 @abstractmethod # 抽象方法 def chi(self): pass # 抽象類中是可以有正常的方法 def dong(self): print('動物會動') # class Cat(Animal): # 此時貓裡面也有一個抽象方法, 此時的貓是無法創建對象的 # pass # # c = Cat() # 此時是報錯的 class Cat(Animal): def chi(self): # 重寫父類中的抽象方法 print('貓喜歡吃魚') c = Cat() c.chi() # 貓喜歡吃魚 c.dong() # 動物會動
2. 異常處理.
# 語法格式 try: # 代碼 except 異常類: # 除了錯, 如何處理異常 except 異常類: # 除了錯, 如何處理異常 except 異常類: # 除了錯, 如何處理異常 else: # 當程式不出錯 finally: # 不管出不出錯, 都要執行 try: print(1/0) # f = open("哈哈哈哈哈", mode="r") # d = {[]:123} except ZeroDivisionError: # 可以處理所有錯誤 print("除以0出錯了") except FileNotFoundError: print("文件不存在的錯誤") except Exception: # 兜底的 print("其他錯誤") else: # 當try中的代碼不產生任何錯誤的時候. 會自動的執行else里的代碼 pass finally: # 最終. 不管出錯還是不出錯. 都要執行最後的finally 一般用來收尾 print("哈哈哈哈哈哈哈哈啊哈")
3. MD5
import hashlib # MD5需要導入這個模塊 # 加密的內容(需要是位元組類型) obj = hashlib.md5(b'liuliuliuliuliuliu') # 加鹽 obj.update('123456'.encode('utf-8')) # 把要加密的內容給md5 print(obj.hexdigest()) # 拿到密文b8de0312dbab0c85cba71b121456f98c # 應用 def my_md5(s): obj = hashlib.md5(b'liuliuliuliuliuliu') # 123456的MD5密文 obj.update(s.encode('utf-8')) return obj.hexdigest() print(my_md5('123456')) # b8de0312dbab0c85cba71b121456f98c username = 'alex' password = 'b8de0312dbab0c85cba71b121456f98c' # 登陸 uname = input('請輸入用戶名:') upwd = input('請輸入你的密碼:') if uname == username and my_md5(upwd) == password: print('登陸成功') else: print('登陸失敗')