1. 程式人生 > >python-day19(約束和異常處理)

python-day19(約束和異常處理)

一. 類的約束

  1. 丟擲異常: NotImplementedError

  2. 抽象類

    from abc import ABCMeta, abstractmethod

    class Base(metaclass = ABCMeta) : 抽象類

      @abstractmethod

      def 方法(self): pass

    class Foo(Base):子類必須重寫父類中的抽象方法

      def 方法(self):

        pass

    一個類包含類抽象方法. 這個類一定是抽象類

    抽象類中可以有正常的方法

    抽象類中如果有抽象方法. 這個類將不能建立物件

    介面: 類中都是抽象方法

 1 # class Base:
 2 #     def login(self): #強制子類做xxx事情
 3 #         raise NotImplementedError('子類沒有實現該方法') #報錯拋異常
 4 # class A(Base):
 5 #     def login(self):
 6 #         print('1')
 7 # class B(Base):
 8 #     def login(self):
 9 #         print('1')
10 # class C(Base): 11 # def denglu(self): 12 # print('1') 13 # # def login(self): #子類沒有設定login函式 繼承父類的login,父類的login報錯 14 # # print('1') 15 # def login(c): 16 # c.login() 17 # login(A()) 18 # login(B()) 19 # login(C()) 20 # ----------------------- 21 # from abc import ABCMeta,abstractmethod
22 # class Base(metaclass=ABCMeta): #抽象類 23 # #抽象方法 24 # @abstractmethod # 25 # def login(self): #強制子類做xxx事 26 # pass 27 # def hehe(self): 28 # print('123') 29 # # b = Base() #報錯的原因是Base 是一個抽象類,含有抽象方法,不允許建立物件的 30 # 31 # # 一個類如果全部都是抽象方法, 這個類可以被稱為介面,用來約束子類和規範子類 32 # class Normal(Base): 33 # def login(self):#重寫了父類中的抽象方法 34 # print('123') 35 # n = Normal() 36 # n.login() 37 38 ''' 39 當我們需要對子類進行約束: 40 1.丟擲異常 NotImplementedError() 沒有實現 -> 約定俗成. 多觀察 41 2.寫抽象類 42 from abc import ABCMeta, abstractmethod 43 class Base(metaclass = ABCMeta): 44 @abstractmethod 45 def 方法(self): 46 pass 47 如果一個類中包含了抽象方法. 那麼這個類一定是一個抽象類 48 一個抽象類中可以包含正常的方法 49 50 介面: 介面中所有的方法都是抽象方法 51 52 子類必須重寫父類中的抽象方法. 否則子類也是一個抽象類 53 '''
View Code

二. 異常處理

  try:

    xxxx

  except Error as e :

  except....

  else:

  finally:

    收尾

  import traceback

  try:

    #嘗試執行的程式碼

  except Exception as e:

    #除了錯之後要做什麼

    traceback.format_exc()  #獲取堆疊資訊(錯誤資訊)

  

四. 日誌

  logging

  critical

  error(最多)

  wraning

  info

  debug