面向物件進階版
阿新 • • 發佈:2021-12-07
面向物件進階版· 組合 · 面向物件的內建函式 · 反射 · 異常 一、組合 1.什麼是組合? class People(): school = 'SH' def __init__(self, name, age, gender, ): self.name = name self.age = age self.gender = gender class Admin(People): pass class Course(): 二、面向物件的內建函式面向物件內建函式很多,常用內建函式有以下幾個:__init__(),__str__(),__del__(),__enter__(),__exit__(),__call__()..... class Student(): school = 'SH' # 呼叫類的時候觸發 def __init__(self, name, age): self.name = name self.age = age def tell(self): print('name: %s, age: %s' % (self.name, self.age)) # 列印物件的時候,自動觸發的函式 # 返回值只能是字串 def __str__(self): return 'name:%s' % self.name # return 123 # 1. 手動執行del # 2. 程式執行完畢觸發 def __del__(self): print('__del__') self.f.close() # 物件加括號自動觸發 def __call__(self, *args, **kwargs): print('__call__') stu = Student('ly', 20) 三、反射反射:反射的概念是由Smith在1982年首次提出的,主要是指程式可以訪問、檢測和修改它本身狀態或行為的一種能力(自省)。這一概念的提出很快引發了電腦科學領域關於應用反射性的研究。它首先被程式語言的設計領域所採用,並在Lisp和麵向物件方面取得了成績。 其有四種方法:getattr、setattr、hasattr、delattr 1. getattr print(getattr(stu, 'name1', None)) # stu.name stu.func() print(getattr(stu, 'func')) getattr(stu, 'func')() # 必須掌握 2. setattr setattr(stu, 'x', 123) print(stu.__dict__) 3. hasattr print(hasattr(stu, 'name')) 4. delattr delattr(stu, 'name') print(stu.__dict__) 四、異常1.什麼是異常? 異常就是錯誤發生的訊號,如果部隊該訊號做處理,那麼異常之後的程式碼都不會執行 異常的種類:語法錯誤、邏輯錯誤 2.為什麼要用異常 增強程式碼的健壯性 3.怎麼用異常? try: 被監測程式碼 except 異常的型別: pass except 異常的型別: pass except 異常的型別: pass except Exception as e: pass else: # 當被監測程式碼沒有發生異常的時候,觸發的 pass finally: 不管被監測的程式碼有沒有出錯,都執行 ==================今天的內容就到這裡了,我們下次再見================ |