構(gòu)造函數(shù)與表達式: __init__, __sub__常見運算符重載方法method | overload | call | __init__ | 構(gòu)造函數(shù) | 對象創(chuàng)建: X = Class(args) | __del__ | 析構(gòu)函數(shù) | X對象收回 | __add__ | 云算法+ | 如果沒有_iadd_,, X+Y, X+=Y | __or__ | 運算符| | 如果沒有_ior_,,X|Y, X|=Y | _repr__, __str__ | 打印,,轉(zhuǎn)換 | print(X),repr(X),,str(X) | __call__ | 函數(shù)調(diào)用 | 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__ | 右側(cè)加法 | other+X | __iadd__ | 實地(增強的)加法 | X+=Y(or else __add__) | __iter__, __next__ | 迭代環(huán)境 | I=iter(X), next() | __contains__ | 成員關(guān)系測試 | item in X(任何可迭代) | __index__ | 整數(shù)值 | hex(X), bin(X), oct(X) | __enter__, __exit__ | 環(huán)境管理器 | with obj as var: | __get__, __set__, __delete__ | 描述符屬性 | X.attr, X.attr=value, del X.attr | __new__ | 創(chuàng)建 | 在__init__之前創(chuàng)建對象 |
索引和分片: __getitem__, __setitem__如果在類中定義的話,則對于實例的索引運算,,會自動調(diào)用__getitem__,。當實例X出現(xiàn)X[i]這樣的索引運算時,,Python會自動調(diào)用__getitem__方法 攔截分片索引迭代: __getitem__迭代器對象: __iter__, __next__盡管上一節(jié)__getitem__是有效的,但它是迭代退而求其次的方法,。Python所有的迭代環(huán)境會有優(yōu)先嘗試__iter__的方法,,再嘗試__getitem__。 從技術(shù)角度上講,,迭代環(huán)境是通過iter去嘗試尋找__iter__方法來實現(xiàn),而這種方法返回一個迭代器對象,。如果已經(jīng)提供了,,python會重復調(diào)用迭代器對象的next()方法,直到發(fā)生StopIteration異常,。如果沒有找到__iter__,,python會使用__getitem__機制。 __getattr__和__setattr__捕捉屬性的的引用__getattr__攔截屬性.運算符 __repr__和__str__會返回字符串表達形式__radd__處理右側(cè)加法__call__攔截調(diào)用當實例調(diào)用時,,使用__call__方法 __del__是析構(gòu)器當實例創(chuàng)建時,,就會調(diào)用__init__構(gòu)造方法。當實例空間被收回時,,析構(gòu)函數(shù)__del__就會自動執(zhí)行,。
|