notes for lxf(五)

類和實例的綁定方法和屬性python

實例綁定 obj.func = func obj.func(obj, &argv)  obj.func = MethodType(func, obj) 第一個參數是方法的引用 第二個參數是自身的引用    這種屬於動態綁定 只能當前實例使用算法

類綁定 classname.func = func  classname.func = MethodType(func, classname) 實例後的對象都能使用 這種方法是在類的內存中建立一個link指向外部的方法函數

__slots__ 限制類的實例屬性 只對當前類起做用 對繼承的子類不起做用 若是子類也有__slots__ 那麼子類實例容許定義的屬性就是自身__slots__加上父類的__slots__單元測試

__slots__ = tuple 定義容許綁定的屬性名稱 注意若是沒定私有屬性 那麼實例也不能使用私有屬性 即__slots__ = ('__name') 這樣才能使用self.__name = name測試

@property裝飾器把一個方法變成屬性 屬性名和函數名要同樣 若是屬性有多個值 則都須要初始化debug

多繼承  MixIn的目的就是給一個類增長多個功能 多繼承順序可查看mro()  C3算法拓撲排序調試

定製類 __str__(print調用的這個) __iter__(變成可用迭代的) __getitem__(變成能夠用切片的) __call__ (把類實例變成可調用的) 特殊方法 不須要直接調用 python的某些函數或操做符會自動的調用對應的特殊方法對象

爲何有的對象能夠用於for循環 有的能夠用於切片 是由於對象自己裏帶有特殊函數 作特定操做會自動調用 dir()查看有哪些特殊函數排序

枚舉類 enum @unique裝飾器避免重複value   __member__返回name和value 能夠把一組相關常量定義在一個class中 class不可變繼承

實例的類型是class class的類型是type type('Class name', (object,) di c(classmethod=fnc))

元類metaclass能夠建立類 修改類

全部錯誤類型都繼承自BaseException try運行可能出錯的代碼 若是運行出錯則後續代碼不會繼續執行 而是直接跳轉至except語句塊 執行完except後 若是有finally語句塊則執行 若是沒發生錯誤 就不執行except 但finally必定會執行

調用棧traceback 

記錄錯誤logging 級別debug info warning error 只打印logging.basicConfig(level=logging.INFO)

拋出異常raise 能夠自定義異常類繼承系統的異常類

調試 print()打印可能有問題的變量 assert斷言 後接的表達式結果若爲假則會拋出AssertionError 能夠用-0關閉assert 調試器pdb單步調試

單元測試「測試驅動開發」 TDD:test-driven development

文檔測試

相關文章
相關標籤/搜索