1. 程式人生 > >py 5.31

py 5.31

let self delet 異常處理 exce 技術 err card isp

技術分享圖片
#1.try except /2.try except else /3.try except else finally /4.try finally
# try:
#     lis = [1,2,3]
#     content = int(input(‘請輸入數字‘))
#     print(lis[content])
#     # name
# except IndexError:
#     print(‘超出範圍‘)
# except ValueError:
#     print(‘您輸入的不是數字哦‘)
# except Exception as e:   #萬能異常(可省略),但是省略以後無法看見具體報錯原因。
# print(e) # else: # print(‘成功執行‘) #沒有錯誤的時候執行else後面的代碼 # finally: #無論任何時候,正確還是錯誤還是其它 ,都執行finally. # print(‘我是finally後面的代碼‘) #else(沒有錯誤的時候執行,可用於顯示成功或結果) #finally(無論如何都執行,可用於操作文件的最後關閉文件) # def func(): # try: # print(‘777‘) # return 888 # finally: #就算前面有return也要繼續執行,擋不住。
# print(‘還執行我‘) # func()
異常處理

技術分享圖片
# 7.創建一個對象:觸發兩個方法:
#              1.構造方法:__new__(cls,*args,**kwargs)
#              2.初始化方法:__init__(self)
#__new__方法是由object調用的類,生成的對象。object.__new__(cls)
# class A:
#     def __init__(self,name):#再觸發init方法
#         self.name = name    #進而進行屬性賦值等操作
#     def __new__(cls, *args, **kwargs):#觸發new方法
# return object.__new__(cls) #得到對象的返回值 # b = A(‘alex‘)#創建一個對象 #與此方法相關的一個模式:單例模式(只存在一個對象) # class A: # _instance = None # def __init__(self,name): # self.name = name # def __new__(cls, *args, **kwargs): # if not cls._instance: # cls._instance = object.__new__(cls) # return cls._instance # else:return cls._instance # a = A(‘alex‘)#首先創建一個對象,_instance值為None # b = A(‘alex‘)#再創建一個對象,_instance值為第一個對象,直接返回,得到的還是第一個對象的值。 #8.刪:1.@property的deleter:刪除偽裝成屬性的方法。 # 2.delattr:刪除屬性。 # 3.__del__:del 對象名,主動觸發__del__方法。主動觸發一般用來做關閉文件的動作,在__del__方法下面做關閉文件的操作, # 防止用戶忘記關閉文件資源。 # 如果不主動觸發,程序結束後,也會自動觸發__del__方法,清除數據。缺點是無法在刪除前進行作為。 #9.item系列: #*對象[參數]:觸發__getitem__方法。 # class A: # def __getitem__(self, item):#對象[item] 得到一個getitem代碼中返回值 # return ‘b‘ # obj = A() # print(obj[‘a‘]) #*對象[參數] = 值:觸發__setitem__方法。 # class A: # def __setitem__(self, key, value): # self.__dict__[key]= value # def __getitem__(self, item): # return self.__dict__[item] # b = A() # print(b[‘a‘]) #沒有值 # b[‘a‘] = ‘liujunjie‘ #賦值 # print(b[‘a‘]) #*del 對象名:觸發 __delitem__: # class A: # def __setitem__(self, key, value): # self.__dict__[key]= value # # def __getitem__(self, item): # return self.__dict__[item] # def __delitem__(self, key): # return self.__dict__.pop(key) # b = A() # b[‘a‘] = ‘liujunjie‘ # print(b[‘a‘]) # del b[‘a‘] #觸發 __delitem__方法,執行其中的代碼,刪除key # print(item.__dict__) #類的內置方法一般也用於模塊的一些內置方法,如: #random模塊的choice/shuffle #choice(對象):觸發__len__和__getitem__方法。 # 1.觸發__len__:計算對象的長度,以此來根據概率隨機抽取。 # 2.觸發__getitem__:使對象變成一個可叠代對象(可以用[]取值的對象) #shuffle(對象):打亂順序。觸發__len__和__getitem__方法、以及__setitem__方法。 #紙牌 # class Paper: # ranks = [str(i) for i in range(2,11)] + list(‘JQKA‘) # suits = [‘紅心‘,‘方片‘,‘黑桃‘,‘草花‘] # def __init__(self): # self._cards = [(rank,suit) for rank in Paper.ranks for suit in Paper.suits] # def __len__(self): # return len(self._cards) # def __setitem__(self, key, value): # self._cards[key] = value #shuffle觸發此方法。 # def __getitem__(self, item): # return self._cards[item] # a = Paper() # print(a[5]) #返回紙牌列表的第五個索引的元素(‘3‘, ‘方片‘) # import random # print(random.choice(a)) #getitem將a變成了可叠代對象,可以用choice隨機抽取其中的元素 # random.shuffle(a) #打亂順序 # print(a._cards)
類的內置方法

py 5.31