1. 程式人生 > >python cheat sheet

python cheat sheet

__slots__=(),限制可動態繫結的屬性

def __str__(self),print的列印方式

def __iter__(self),def next(self),迴圈呼叫iter返回迭代物件(可迭代物件iterable與迭代器物件iterator)的next()方法,使類具有類似list/tuple的迭代功能

yield將函式物件變為生成器generator

with語法糖,物件必須有一個enter()方法,一個exit()方法。(with如何工作)

__getitem__(self,),實現下標訪問或者切片訪問

__getattr__(self,),訪問類不存在的屬性時呼叫,可以用來做REST API鏈式呼叫

__call__(self),將例項當作函式來呼叫,通過callable()判斷一個物件是否是”可呼叫”物件

type()函式既可以返回一個物件的型別,又可以創建出新的型別,type(class的名字,(基類,),dict(方法名=函式地址,))

__metaclass__類建立類,從type類繼承,過載def __new__(cls,name,bases,attrs)方法

__私有變數名 實際上被轉換成了_classname__私有變數名,即無法限制你訪問私有成員變數

類屬性與例項屬性

class S{name='A1'}
S s1
>>>s1.name
>>>'A1'
#類屬性 >>>s1.name='B1'#例項屬性 >>>s1.name >>>'B1' >>>del B1.name#刪除類屬性 >>>B1.name >>>'A1'#例項屬性不存在時,會訪問類屬性。

為什麼會訪問到類屬性呢?
1.那麼Python裡的類和其他的物件有什麼區別?
例項是物件,因為建立例項的是類.類是物件,建立類的是什麼呢?Python給的答案就是元類.你可以通過type()函式來檢視它的元類.(type(type)得到的是它自己)
2.Python中屬性查詢機制

python除錯方法
1.try...except...else...finallyexcept相當於elif所以碰到一個滿足條件的後面的except就會被遮蔽,而且子類錯誤物件可以被父類except接收,但是父類錯誤物件則不會被子類接收。
2.assert True,'xxx'斷言執行結果與True的內容是否相符,不符合則列印‘xxx’。好處是可以在執行時選擇關閉assert,避免了一行行刪除print語句
3.logging定義出錯記錄位置,可以自定義記錄哪些等級的錯誤資訊。
4.pdb