python學習手冊筆記 30 類的設計

2022-08-19 14:48:11 字數 1307 閱讀 8061

00.python的oop實現可以概括未三個概念:

*繼承:繼承是給予python中的屬性查詢

*多型:在x.method方法中,method的意義取決於x的型別

*封裝:方法和運算子實現行為,資料隱藏預設是一種管理

01.從設計的角度來看,繼承是一種定義集合成員關係的方式:類定義了一組內容屬性,可由具體的集合(子類)繼承和定製。

02.聚合(aggregation):使用聚合描述容器和所涵物之間較弱的議來關係來區分這個術語。「組合」就是內嵌物件集合體。組合類一般都提供自己的介面,並通過內嵌的物件來實現介面。

03.物件導向程式猿時常會談到所謂的委託(delegation),通常就是指可能感知器物件內嵌其他物件,而把運算請求傳給那些物件。控制器負責管理工作。python中,委託通常是以__getattr__鉤子方法實現的,因為這個方法會攔截對不存在屬性的讀取,包裝類(有時稱為**類)可以使用__getattr__把任意讀取**給被包裝的物件。

04.讓類內某些變數區域性化。壓縮後的變數名有時會被誤認認為「私有屬性」,單這其實只是一種把類所建立的變數名區域性化的方式而已:名臣壓縮並無組織類外**對他的讀取。

05.在變數前面加__x保證了變數私有

06.07.方法也是一種獨享,並且可以用與其他物件大部分相同的方式廣泛地使用——可以對他們賦值、將器傳遞給函式、儲存在資料結構中。

08.08.無繫結類方法物件:無self

繫結例項方法物件:self+函式對

09.把類傳給會產生任意種類物件的函式。這類函式在oop設計領域中偶爾稱為工廠。

11.__slots__類屬性:將字串屬性名稱順序賦值給特殊的,新式類就有可能既限制類的例項將有的合法屬性集,又能夠優化記憶體和速度效能。通過在__slots__鐘包含__dict__仍然可以容納額外的屬性,從而考慮到乙個屬性空間字典的需求。

12.特性是定義特定型別描述符的一種簡化方式,該描述符執行關於訪問的函式。

13.靜態方法大致與乙個類鐘的簡單的五十里函式類似地工作,類方法傳遞乙個類而不是乙個例項。

14.類方法總是接收乙個例項樹鐘的最低類:

*靜態方法和顯式類名稱可能對與處理乙個類本地的資料來說是更好的解決方案

*類方法可能更適合處理對層級鐘的公尺格類不同的資料

15.函式裝飾器(function decorator)提供了一種方式,替函式明確了特定的運算模組隨,也就是將函式包裹了另一層,在另乙個函式的邏輯內實現。

16.staticmethod裝飾器,因為裝飾器會傳回任何種類的物件,這也可以讓裝飾器在每次呼叫上增加一層邏輯。

17.除非真的有必要,否則不要把事情弄得很複雜。把程式**包裹很多層直到人們難以理解位置,這絕對是個壞主意。

python學習手冊筆記 39 元類

00.比99 的使用者所擔心的魔力要更深。如果你猶豫是否需要他們,那你不需要它們 真正需要元類的人,能夠確定地直到需要它們,並且不需要說明為什麼需要 因為某物很酷 而編寫它,似乎不是一種合理的判斷,除非你在做試驗或者學習。01.元類就是用來建立類的 東西 你建立類就是為了建立類的例項物件。02.03...

python學習筆記 30 列舉類

當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...

python學習手冊學習筆記(一)

第三章 如何執行檔案 避免命令列執行時閃退 加input 到最後 匯入 import 從本質上講,就是載入另乙個檔案。把其中乙個模組檔案設計成主檔案。屬性 繫結在特定物件上的變數名 比如乙個模組 讀取模組檔案的變數名 import from reload。從模組檔案中獲得變數名 from myfil...