① 異常處理數據庫
在寫代碼的過程當中一般會遇到一些錯誤致使程序報錯,而且大多數時候,本身也會知道哪裏最有可能出問題,這種狀況下,能夠對代碼增長異常處理。函數
1 import traceback 2 a = [1,2,3] 3 try: 4 print(a[5]) 5 except Exception as info: 6 print(info) 7 else: 8 print('沒出錯') 9 finally: 10 print('出不出錯都執行的')
上面須要說明的第一點:異常處理時也能夠把上面「Exception」替換爲具體的出錯類型,前提是你寫代碼的時候清楚哪一種報錯類型,若是不符合寫的類型,同樣仍是會遇到程序報錯運行失敗;spa
第二點,except 是出錯執行的部分,else 是沒出錯執行的部分,finally 是出不出錯都會執行的部分;code
第三,info 是出錯時系統給出的提示,上面的錯誤提示爲 ’list index out of range‘,可是上面並無用到導入的模塊,導入模塊能夠把程序報錯時的全部信息獲取到,具體到哪一行。以下:orm
1 import traceback 2 a = [1,2,3] 3 try: 4 print(a[5]) 5 except Exception as a: #若是a用不到,也能夠不寫 as a 6 print(traceback.format_exc())
實際應用時,拿連接數據庫舉例,好比在連數據庫時加個 try,若是報錯那必定是數據庫鏈接問題;在發送請求的地方加個 try,若是報錯那必定是請求發送有問題,這樣就能夠避免寫的過程當中報錯了而後像個沒頭蒼蠅同樣處處試~~~對象
② 面向對象blog
幾個概念:繼承
類:至關於一個模型,裏面集合了一些方法和屬性,類的組成:類名、屬性和方法索引
對象:根據模型具象化的東西接口
實例化:根據模型造對象的過程
【封裝】
封裝的主要特色以下所示。
【多態】
多態的主要特徵以下所示。
它爲咱們展現了 Python 內置類型的多態:
1 a = 'John'
2 b = (1,2,3)
3 c = [3,4,5,6] 4 print(a[1],b[0],c[2])
【繼承】
如下幾點有助於更好地理解繼承過程。
如下簡單的定義一個類和一些說明。
1 class Car(object): 2 def __init__(self): 3 print('--init--') 4 def __del__(self): 5 print('--del--') 6 def move(self): 7 print('--move--') 8 def stop(self): 9 print('--stop--') 10 def __new__(self): 11 print('--new--') 12 return object.__new__(cls) #cls 就是class
1. 關於繼承,公有屬性和方法能夠繼承,私有方法和屬性不能被繼承,可是能夠經過公有方法來修改。繼承以後,能夠經過打印'類名.mro()'或‘類名.__mro__’來查看繼承的順序。
2. __init__ 方法是一個初始化的方法,對象建立成功後自動執行。
3. __new__ 方法是建立對象的方法,實例化的過程就至關因而在執行基類的這個功能,以上的代碼中,若是不加 return object.__new__(cls), 那麼對象不會被建立,init 也不會執行,只會執行 new 中的方法,這是由於,第一,驗證了建立對象就是去執行new這個方法;第二,子類重寫了父類的方法,致使只執行子類的new方法,而子類重寫的方法中不包含建立對象,因此不會被建立。所以,加上 return 那一句,就能夠正常實例話,而且 init 也能夠被執行。
4. 調用被重寫的方法:類名.方法(self)
5. 靜態方法:@staticmethod,由於在程序開發過程當中,一般只會用類或者只用函數,因此有的函數定義了但與類沒什麼實際的關聯,這種就能夠放在類裏面定義爲一個靜態方法。
6. 類方法:@classmethod,能夠經過類型.類方法直接調用。
7. __del__ 方法在對象被釋放/被刪除時調用。
8. sys.getrefcount(對象) 能夠查看對象的引用個數,比實際多1
9. 面向對象的三個基本要素:封裝、繼承和多態
就先醬紫吧~😉