2018.12.21 今日所學
阿新 • • 發佈:2018-12-22
今日所學 :
1 .類的約束
2 .異常處理 try except raise
3. MD5加密
4. 日記處理(不要記,留一份,側重點再用)
1 .類的約束
1) 寫一個父類,父類中的某個方法要丟擲一個異常 NotlmplemenredError(重點)
class Base: #建立一個父類約束子類 def login(self): raise NotImplementedeError('系統報錯,請重新輸入') # 扔一個錯誤給子類,
約束他們按照指定的內容輸入 class yonghu(Base): # 建立普通使用者類 def login(self): print('使用者登入') class guanli(Base): #建立管理員登入類 def login(self): print('普通管理員登入') class chaoguan(Base): #建立超管類 def deng(self): print("超管登入") def denglu(content): #整合登入資訊功能 content.login() y=yonghu() #建立使用者 g=guanli() c=chaoguan() denglu.login(y) # 使用者登入 denglu.login(g) denglu.login(c) #此時超管使用者登入沒有login這一項,所以會報錯,此時應該建立一個約束
2) 抽象類和抽象方法
抽象類和抽象方法 ->Java ,c#
抽象方法不需要給出具體的方法體,
抽象發放內建寫一個pass就可以了
在一個類中如果有一個方法是抽象方法,那麼這個類一定是抽象類
抽象類中,如果有抽象方法,此時這個類不能建立物件
# 寫一個抽象方法: 匯入一個模組 from abc import ABCMeta,abstractmethod #引入一個抽象模組 class animal(metaclass=ABCMeta): @abstractmethod def chi(self): pass # 寫完上面的東西就是抽象類 def he(self): # 在抽象類中也是可以有正常方法的 print('動物會動') class cat(animal): def chi(self): #和上面第一種方法性質一樣,都是約束子類要與父類中的抽象方法一致 print('貓喜歡吃魚') a=cat() a.chi() a.he() #抽象類中也可以有正常方法,同樣可以正常使用
使用抽象方法時 ,需要引入的模組
form abc import ABCMeta,abstractmethod class Base(metaclass=ABCMeta): @abstractmethod def fangfa(self): pass
2 .異常處理 try except raise
try : # 嘗試 print('1/0') f=open('a1',mode='r') except ZeroDivisionError: # 0的錯誤 print('零不能作分母') except FileNotFoundError: # 檔案錯誤 print('檔案不存在') else: print('正常執行') #如果不報錯,就執行這裡 finally: print('不管報不報錯都執行這一步') #不管報不報錯都執行這裡
所有異常的根源都是Exception, 所有的異常的類都會預設繼承Exception
try: 程式碼 except 異常類: 出了錯,如何處理異常 except 異常類: 出了錯,如何處理異常 except 異常類: 出了錯,如何處理異常 else: 如果不出錯,走著一條 finally: 不管出不出錯,都走這一條,都要執行
raise 異常類('資訊')
如何自己定義異常
# 隨便寫一個類,只要他能繼承Exception,就可以自定義錯誤 class ztyException(Exception): pass
class 類(Exception): # 繼承 Exception是包含所有的錯誤 pass
如何手動丟擲異常
#我們以數字相加為例 class NotintException(Exception): #自定義一個異常 pass def cul(a,b): if (type(a)==int or type(a)==folat) and (type(b)==int or type(b)==folat): return a+b else: raise NotintException('我沒辦法處理不是整數的型別')
堆疊資訊 (錯誤資訊)
import traceback traceback.format_exc()
3. MD5加密
import hashlib content=input('請輸入你要加密的內容:') obj=hashlib.md5(b'bviuafakbvuaubuwaoi') #加鹽 obj.update(content,encode('utf-8')) #將加鹽後的程式碼轉成utf-8 print(obj.hexdigest()) # 拿到密文 # 注 : 這裡的加的鹽加上之後是不能更改的,否則你的加密的內容也會改變
(import hashlib)
obj=hashlib.md5(b'鹽')
obj.update(b'要加密的內容')
print('obj.hexdigest()')
4. 日記處理(不要記,留一份,側重點再用)
日誌主要是記錄使用者操作的每一步步驟 : 什麼使用者什麼時間幹了什麼
等級 :
critical : 50
error : 40
warning: 30
info : 20
debug : 10