1. 程式人生 > >Python基礎教程(第3版)中文版 第7章 類和物件(筆記)

Python基礎教程(第3版)中文版 第7章 類和物件(筆記)

                                  7 類和物件


1.物件魔法


 1.多型
 2.多型和方法 
 3.封裝
 4.繼承


2.類


 1.類是什麼 類 型別
 2.建立自定義類
 class Person:
     def set_name(self,name):
         self.name = name
     def get_name(self):
         return self.name
 self是物件本身,方法將第一個引數關聯到它所屬的示例,呼叫時無需提供
 3.屬性、函式和方法
 4.再談隱藏
 預設,可從外部訪問物件屬性。
 讓方法或屬性成為私有

在名稱前加雙下劃線。 但是,實際上是在類定義中對這樣的名稱進行了轉換,在開頭加上了一個下劃線和類名
 就是說,python沒有真正的私有方法/成員
 5.類的名稱空間
 6.指定超類(父類)
 class 類名(父類名)
 7.繼承
 issubcclass  判斷一 個類是另一個類的子類
 __bases__ 屬性,得到基類
 isinstance 物件是某個類的例項
 8. 多個超類
 基類可以有多個(多重繼承)
 9.介面和內省

 10.抽象基類
 模組abc
 @abstractmethod 標記抽象方法

 3.面向物件設計的指南


 -把相關的東西放在一起。
 -不要讓物件之間過於親密
 -慎用繼承,尤其是多重繼承。
 -保持簡單。
 確保需要哪些類及需要哪些方法:


 1.將問題描述記錄下來,給名詞、動詞和形容詞加標記。
 2.在名詞中找可能的類。
 3.動詞找方法
 4.形容詞找屬性
 5.把找出的方法和屬性分配給各個類
 改進:
 設想使用場景。

小結


python的類和物件概念和C++的類和物件有很多相似的地方,共同的oop原則(多型、封裝、繼承)。也有很多不同的地方,比如c++中的私有和保護在python中不存在。

第7章出現的函式


callable(object) 判斷物件是否是可呼叫的(如是否是函式或方法)
getattr(object,name[,default]) 獲取屬性的值,還可提供預設值
hasattr(object, name) 確定物件是否有指定的屬性
isinstance(object, class) 確定物件是否是指定類的例項
issubclass(A, B) 確定A是否是B的子類
random.choice(sequence) 從一個非空序列中隨機地選擇一個元素
setattr(object, name, value) 將物件的指定屬性設定為指定的值
type(object) 返回物件的型別