標籤:**kwargs ddc get editable 重載 write nta 分享圖片 oct
建構函式與運算式: __init__, __sub__常見運算子多載方法
| method |
overload |
call |
| __init__ |
建構函式 |
對象建立: X = Class(args) |
| __del__ |
解構函式 |
X對象收回 |
| __add__ |
雲演算法+ |
如果沒有_iadd_, X+Y, X+=Y |
| __or__ |
運算子| |
如果沒有_ior_,X|Y, X|=Y |
| _repr__, __str__ |
列印,轉換 |
print(X),repr(X),str(X) |
| __call__ |
函數調用 |
X(*args, **kwargs) |
| __getattr__ |
點號運算 |
X.undefined |
| __setattr__ |
屬性指派陳述式 |
X.any=value |
| __delattr__ |
屬性刪除 |
del X.any |
| __getattribute__ |
屬性擷取 |
X.any |
| __getitem__ |
索引運算 |
X[key],X[i:j] |
| __setitem__ |
索引指派陳述式 |
X[key],X[i:j]=sequence |
| __delitem__ |
索引和分區刪除 |
del X[key],del X[i:j] |
| __len__ |
長度 |
len(X),如果沒有__bool__,真值測試 |
| __bool__ |
布爾測試 |
bool(X) |
__lt__, __gt__, __le__, __ge__, __eq__, __ne__ |
特定的比較 |
X<Y,X>Y,X<=Y,X>=Y, X==Y,X!=Y 注釋:(lt: less than, gt: greater than, le: less equal, ge: greater equal, eq: equal, ne: not equal ) |
| __radd__ |
右側加法 |
other+X |
| __iadd__ |
實地(增強)加法 |
X+=Y(or else __add__) |
| __iter__, __next__ |
迭代環境 |
I=iter(X), next() |
| __contains__ |
成員關係測試 |
item in X(任何可迭代) |
| __index__ |
整數值 |
hex(X), bin(X), oct(X) |
| __enter__, __exit__ |
環境管理器 |
with obj as var: |
__get__, __set__, __delete__ |
描述符屬性 |
X.attr, X.attr=value, del X.attr |
| __new__ |
建立 |
在__init__之前建立對象 |
索引和分區: __getitem__, __setitem__
如果在類中定義的話,則對於執行個體的索引運算,會自動調用__getitem__。當執行個體X出現X[i]這樣的索引運算時,Python會自動調用__getitem__方法
攔截分區索引迭代: __getitem__迭代器對象: __iter__, __next__
儘管上一節__getitem__是有效,但它是迭代退而求其次的方法。Python所有的迭代環境會有優先嘗試__iter__的方法,再嘗試__getitem__。
從技術角度上講,迭代環境是通過iter去嘗試尋找__iter__方法來實現,而這種方法返回一個迭代器對象。如果已經提供了,python會重複調用迭代器對象的next()方法,直到發生StopIteration異常。如果沒有找到__iter__,python會使用__getitem__機制。
__getattr__和__setattr__捕捉屬性的的引用
__getattr__攔截屬性.運算子
__repr__和__str__會返回字串表達形式__radd__處理右側加法__call__攔截調用
當執行個體調用時,使用__call__方法
__del__是析構器
當執行個體建立時,就會調用__init__構造方法。當執行個體空間被收回時,解構函式__del__就會自動執行。
Python 運算子多載 [轉載]