python中雙下劃線開頭得函式和變數
FROM:http://blog.csdn.net/largetalk/article/details/6990191
python中以雙下劃線的是一些系統定義得名稱,讓python以更優雅得語法實行一些操作,本質上還是一些函式和變數,與其他函式和變數無二。
比如x.__add__(y) 等價於 x+y
有一些很常見,有一些可能比較偏,在這裡羅列一下,做個筆記,備忘。
x.__contains__(y) 等價於 y in x, 在list,str, dict,set等容器中有這個函式
__base__, __bases__, __mro__, 關於類繼承和函式查詢路徑的。
class.__subclasses__(), 返回子類列表
x.__call__(...) == x(...)
x.__cmp__(y) == cmp(x,y)
x.__getattribute__('name') == x.name == getattr(x, 'name'), 比__getattr__更早呼叫
x.__hash__() == hash(x)
x.__sizeof__(), x在記憶體中的位元組數, x為class得話, 就應該是x.__basicsize__
x.__delattr__('name') == del x.name
__dictoffset__ attribute tells you the offset to where you find the pointer to the __dict__ object in any instance object that has one. It is in bytes.
__flags__, 返回一串數字,用來判斷該型別能否被序列化(if it's a heap type), __flags__ & 512
S.__format__, 有些類有用
x.__getitem__(y) == x[y], 相應還有__setitem__, 某些不可修改型別如set,str沒有__setitem__
x.__getslice__(i, j) == x[i:j], 有個疑問,x='123456789', x[::2],是咋實現得
__subclasscheck__(), check if a class is subclass
__instancecheck__(), check if an object is an instance
__itemsize__, These fields allow calculating the size in bytes of instances of the type. 0是可變長度, 非0則是固定長度
x.__mod__(y) == x%y, x.__rmod__(y) == y%x
x.__module__ , x所屬模組
x.__mul__(y) == x*y, x.__rmul__(y) == y*x
python中以雙下劃線的是一些系統定義得名稱,讓python以更優雅得語法實行一些操作,本質上還是一些函式和變數,與其他函式和變數無二。
比如x.__add__(y) 等價於 x+y
有一些很常見,有一些可能比較偏,在這裡羅列一下,做個筆記,備忘。
x.__contains__(y) 等價於 y in x, 在list,str, dict,set等容器中有這個函式
__base__, __bases__, __mro__, 關於類繼承和函式查詢路徑的。
class.__subclasses__(), 返回子類列表
x.__call__(...) == x(...)
x.__cmp__(y) == cmp(x,y)
x.__getattribute__('name') == x.name == getattr(x, 'name'), 比__getattr__更早呼叫
x.__hash__() == hash(x)
x.__sizeof__(), x在記憶體中的位元組數, x為class得話, 就應該是x.__basicsize__
x.__delattr__('name') == del x.name
__dictoffset__ attribute tells you the offset to where you find the pointer to the __dict__ object in any instance object that has one. It is in bytes.
__flags__, 返回一串數字,用來判斷該型別能否被序列化(if it's a heap type), __flags__ & 512
S.__format__, 有些類有用
x.__getitem__(y) == x[y], 相應還有__setitem__, 某些不可修改型別如set,str沒有__setitem__
x.__getslice__(i, j) == x[i:j], 有個疑問,x='123456789', x[::2],是咋實現得
__subclasscheck__(), check if a class is subclass
__instancecheck__(), check if an object is an instance
__itemsize__, These fields allow calculating the size in bytes of instances of the type. 0是可變長度, 非0則是固定長度
x.__mod__(y) == x%y, x.__rmod__(y) == y%x
x.__module__ , x所屬模組
x.__mul__(y) == x*y, x.__rmul__(y) == y*x
__reduce__, __reduce_ex__ , for pickle
__slots__ 使用之後類變成靜態一樣,沒有了__dict__, 例項也不可新新增屬性
__getattr__ 在一般的查詢屬性查詢不到之後會呼叫此函式
__setattr__ 取代一般的賦值操作,如果有此函式會呼叫此函式, 如想呼叫正常賦值途徑用 object.__setattr__(self, name, value)
__delattr__ 同__setattr__, 在del obj.name有意義時會呼叫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1260151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python中那些雙下劃線開頭得函式和變數Python函式變數
- Python中帶下劃線_的變數和函式命名的用法Python變數函式
- Python 中的單下劃線和雙下劃線Python
- Swift4.0 函式引數(內部外部引數和下劃線在函式的作用)Swift函式
- 【Python】單下劃線與雙下劃線的區別Python
- Python 函式和變數作用域Python函式變數
- 雙下劃線開頭的記憶體引數對Oracle AMM行為的影響記憶體Oracle
- 規定密碼以字母開頭只能包含字母、數字和下劃線密碼
- python雙下劃線有什麼用Python
- Python知識點-單雙下劃線Python
- Python中的下劃線Python
- python---函式引數、變數Python函式變數
- python3判斷給定的字串是否只包含字母、數字、中劃線或者下劃線中的一個或多個,並且以字母或數字開頭(正規表示式)Python字串
- 13.1 函式中的變數函式變數
- 函式中的私有變數和特權方法函式變數
- python函式變長引數Python函式
- Python 函式(可變引數)Python函式
- Javascript 函式和變數提升JavaScript函式變數
- Python 數值中的下劃線是怎麼回事?Python
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- JS——變數提升和函式提升JS變數函式
- 詳解Python中的下劃線Python
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- Python私有函式和公開函式Python函式
- 『無為則無心』Python函式 — 29、Python變數和引數傳遞Python函式變數
- Go 入門 – 包,函式和變數Go函式變數
- JS變數宣告和函式宣告提升JS變數函式
- python變數命名為什麼數字不能開頭?Python變數
- 箭頭函式中的this函式
- Python函式引數前的單星號(*)和雙星號(**)的作用Python函式
- test函式中的區域性變數函式變數
- Python下劃線用法Python
- Python函式引數傳遞以及變數作用域Python函式變數
- Python檢視模組(變數、函式、類)方法Python變數函式
- python中用函式初始化類變數Python函式變數
- 關於變數的宣告和定義、內部函式和外部函式變數函式
- 深入理解變數提升和函式提升變數函式
- JS 會有變數提升和函式提升JS變數函式