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