最近需要重新定義類,老是會忘記python內建方法的的作用和名稱,mark一下加深一下記憶。
基本上python的常見內建方法如下面所示:
內建方法說明
__init__(self,...)
初始化物件,在建立新物件時呼叫
__del__(self)
釋放物件,在物件被刪除之前呼叫
__new__(cls,*args,**kwd)
例項的生成操作
__str__(self)
在使用print語句時被呼叫
__getitem__(self,key)
獲取序列的索引key對應的值,等價於seq[key]
__len__(self)
在呼叫內聯函式len()時被呼叫
__cmp__(stc,dst)
比較兩個物件src和dst
__getattr__(s,name)
獲取屬性的值,等價於點呼叫(例如a.(...)假如重定義乙個字典類,則a[b]等價於a.b))
__setattr__(s,name,value)
設定屬性的值,等價於點設定(a[b]=1,a.b=1)
__delattr__(s,name)
刪除name屬性
__getattribute__()
__getattribute__()功能與__getattr__()類似
__gt__(self,other)
判斷self物件是否大於other物件
__lt__(slef,other)
判斷self物件是否小於other物件
__ge__(slef,other)
判斷self物件是否大於或者等於other物件
__le__(slef,other)
判斷self物件是否小於或者等於other物件
__eq__(slef,other)
判斷self物件是否等於other物件
__call__(self,*args)
把例項物件作為函式呼叫
下面po一下我重定義字典的**
class dict(dict):
'''****** dict but support access as x.y style.
'''#初始化已例項化後的所有父類物件,方便後續使用或擴充套件父類中的行為:
def __init__(self, names=(), values=(), **kw):
super(dict, self).__init__(**kw)
#zip([seql, ...])接受一系列可迭代物件作為引數,將物件中對應的元素打包成乙個個tuple(元組),然後返回由這些tuples組成的list(列表)。
# 若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。
for k, v in zip(names, values):
self[k] = v
#屬性動態化處理;當使用點號獲取類例項屬性時,如果屬性不存在就自動呼叫__getattr__方法。
def __getattr__(self, key): #此處為:提取字典內,指定key值的value,沒找到則丟擲異常。
try:
return self[key]
except keyerror:
raise attributeerror(r"'dict' object has no attribute '%s'" % key)
#屬性賦值;當設定類例項屬性時自動呼叫。
def __setattr__(self, key, value): #此處為:設定字典對值。
self[key] = value
python 內建 Python內建方法大全
新增元素 集合.add 集合.update 一次新增多個值 集合隨機刪除 集合.pop 集合刪除指定元素 集合.remove 沒有找到會奔潰 集合.discard 沒有找到不會奔潰 移除空白 strip 取字串兩邊空格 lstrip 取字串左邊空格 rstrip 取字串右邊空格 括號中可以新增引數指...
python內建 python內建方法總結
注意 內建函式id 可以返回乙個物件的身份,返回值為整數。這個整數通常對應與該物件在記憶體中的位置,但這與python的具體實現有關,不應該作為對身份的定義,即不夠精準,最精準的還是以記憶體位址為準。is運算子用於比較兩個物件的身份,等號比較兩個物件的值,內建函式type 則返回乙個物件的型別 以下...
python內建方法
內建方法 說明 init self,初始化物件,在建立新物件時呼叫 del self 釋放物件,在物件被刪除之前呼叫 new cls,args,kwd 例項的生成操作 str self 在使用print語句時被呼叫 getitem self,key 獲取序列的索引key對應的值,等價於seq key...