(總結)python 3程序開發指南(六)面向對象程序設計

1.在python中每一個內置的類、類庫以及咱們建立的每一個類都直接或間接地從最頂層的基類----object類衍生而來。python

2.咱們能夠經過在類中實現__len__、__add__方法來支持len()、add()函數編程

3.python面向對象編程沒有提供的兩個功能:第一個是重載,第二個是明確的訪問控制,可是咱們能夠經過在屬性名前加以兩個下劃線引導,python 就會組織無意的訪問.安全

4.python類中全部對象屬性(屬性以及方法屬性)都必須由self進行指定。函數

5.任何一個類都含有特殊方法__new__屬性,通常咱們不須要對其進行重寫。通常先調用__new__來建立對象,而後調用__init__初始化對象。加密

6.自定義類的全部實例都是可hash的,可是當我門從新實現__eq__方法後,他就再也不可hash,除非你從新實現__hash__方法。對象

7.自定義類的全部實例都是支持==,這種比較老是返回False字符串

8.若是咱們但願避免不適當的比較,能夠經過斷言實現:assert isinstance(other, Point)string

9.__repr__方法返回結果有兩種類型:一種可使用內置的eval()函數進行評估,並生成一個與repr()調用對象的等價的對象;另外一種會返回字符串。hash

10.property()修飾器函數是一個內置函數,至多能夠接受4個參數:一個獲取者函數,一個設置者函數,一個刪除者函數,以及一個docstring。使用@property的效果與僅使用一個參數(獲取者函數)效果相同。it

11。全部對象都具有python自動提供的某些特殊方法,其中一種方法稱爲__class__,其實是對對象類的一個引用.全部類都有一個私有的__name__屬性,也是由python自動提供的.

12.提供hash函數時:

 能夠這樣:

   def __hash__(self):

            return hash(id(self))

id(self)返回對象獨一無二的ID值。

 13。注意使用python的staticmethod和classmethod

14.高級取消實現每一個不須要的方法的使用

15.注意del語句和pop語句的區別是後者能夠在不存在時隱式的調用而不產生錯誤。

16.pickling可將python對象序列化轉換爲字節序列或字符串,它處理的能夠是組合數據類型,處理方便,可是pickle沒有安全機制(沒有加密,也沒有進行數字簽名)

17.copy.copy()被調用時,將首先嚐試使用對象的特殊方法__copy__(),若是對象沒有提供該方法就再返回執行本身的代碼(相似__deepcopy__)

相關文章
相關標籤/搜索