Python基礎教程(第3版)中文版 第7章 類和物件(筆記)
阿新 • • 發佈:2019-02-16
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) 返回物件的型別