• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            常用Magic Methods魔數(shù)方法說(shuō)明

            構(gòu)造與初始化
            __new__(cls, [...)                類的初始化過(guò)程中第一個(gè)被執(zhí)行的方法。
            __init__(self, [...)                類的構(gòu)造器,必須返回對(duì)象
            __del__(self)                    析構(gòu)函數(shù)。它定義了一個(gè)被垃圾回收的行為。它在類消除的時(shí)后需要做一些額外的行為時(shí)是非常有用 __del__很少被使用,因?yàn)樗恼{(diào)用是非常不穩(wěn)定的;請(qǐng)謹(jǐn)慎使用!
            __metaclass__    定義當(dāng)前類的元類
            __class__         查看對(duì)象所屬的類
            __base__ 獲取當(dāng)前類的父類
            __bases__ 獲取當(dāng)前類的所有父類

            類中的操作
            比較方法
            __cmp__(self, other)  實(shí)現(xiàn)了所有的比較運(yùn)算符(如<, ==, !=)的行為,當(dāng)self < other時(shí)__cmp__應(yīng)該返回一個(gè)負(fù)整數(shù),當(dāng)self == other時(shí)返回0,self > other時(shí)返回正整數(shù)。python3被刪除
            __eq__(self, other)      定義相等符號(hào)的行為,==
            __ne__(self,other)      定義不等符號(hào)的行為,!=
            __lt__(self,other)      定義小于符號(hào)的行為,<
            __gt__(self,other)     定義大于符號(hào)的行為,>
            __le__(self,other)    定義小于等于符號(hào)的行為,<=
            __ge__(self,other)   定義大于等于符號(hào)的行為,>=
            數(shù)值魔術(shù)方法
            _pos__(self)      實(shí)現(xiàn)一個(gè)取正數(shù)的操作(比如 +some_object ,python調(diào)用__pos__函數(shù))
            __neg__(self)    實(shí)現(xiàn)一個(gè)取負(fù)數(shù)的操作(比如 -some_object )
            __abs__(self)    實(shí)現(xiàn)一個(gè)內(nèi)建的abs()函數(shù)的行為
            __invert__(self) 實(shí)現(xiàn)一個(gè)取反操作符(~操作符)的行為。想要了解這個(gè)操作的解釋,參考the Wikipedia article on bitwise operations.
            __round__(self, n) 實(shí)現(xiàn)一個(gè)內(nèi)建的round()函數(shù)的行為。 n 是待取整的十進(jìn)制數(shù).
            __floor__(self)  實(shí)現(xiàn)math.floor()的函數(shù)行為,比如, 把數(shù)字下取整到最近的整數(shù).
            __ceil__(self)    實(shí)現(xiàn)math.ceil()的函數(shù)行為,比如, 把數(shù)字上取整到最近的整數(shù).
            __trunc__(self)     實(shí)現(xiàn)math.trunc()的函數(shù)行為,比如, 把數(shù)字截?cái)喽玫秸麛?shù).
            算數(shù)運(yùn)算
            __add__(self, other) 實(shí)現(xiàn)一個(gè)加法.
            __sub__(self, other) 實(shí)現(xiàn)一個(gè)減法.
            __mul__(self, other) 實(shí)現(xiàn)一個(gè)乘法.
            __floordiv__(self, other) 實(shí)現(xiàn)一個(gè)“//”操作符產(chǎn)生的整除操作()
            __div__(self, other) 實(shí)現(xiàn)一個(gè)“/”操作符代表的除法操作.
            __truediv__(self, other) 實(shí)現(xiàn)真實(shí)除法,注意,只有當(dāng)from __future__ import division時(shí)才會(huì)有效
            __mod__(self, other) 實(shí)現(xiàn)一個(gè)“%”操作符代表的取模操作.
            __divmod__(self, other) 實(shí)現(xiàn)一個(gè)內(nèi)建函數(shù)divmod()
            __pow__  實(shí)現(xiàn)一個(gè)指數(shù)操作(“**”操作符)的行為
            __lshift__(self, other) 實(shí)現(xiàn)一個(gè)位左移操作(<<)的功能
            __rshift__(self, other) 實(shí)現(xiàn)一個(gè)位右移操作(>>)的功能.
            __and__(self, other) 實(shí)現(xiàn)一個(gè)按位進(jìn)行與操作(&)的行為.
            __or__(self, other) 實(shí)現(xiàn)一個(gè)按位進(jìn)行或操作(|)的行為.
            __xor__(self, other) 實(shí)現(xiàn)一個(gè)異或操作(^)的行為

            反射算術(shù)運(yùn)算符
            所有的魔法方法做的事情與正常運(yùn)算表示的意義是等價(jià)的。注意,下面參數(shù)othe必須保證該對(duì)像沒(méi)有定義(或者返回NotImplemented的)它的非反射運(yùn)算符。例如,在這個(gè)例子中,some_object.__radd__  只有在 other沒(méi)有定義__add__的時(shí)候才會(huì)被調(diào)用。
            __radd__(self, other) 反射加法
            __rsub__(self, other) 反射減法的
            __rmul__(self, other) 反射除法
            __rfloordiv__(self, other) 反射地板除,使用//運(yùn)算符的
            __rdiv__(self, other) 反射除法,使用/運(yùn)算符的.
            __rtruediv__(self, other) 反射真除.注意只有from __future__ import division 的時(shí)候它才有效
            __rmod__(self, other) 反射取模運(yùn)算,使用%運(yùn)算符.
            __rdivmod__(self, other) 長(zhǎng)除法,使用divmod()內(nèi)置函數(shù),當(dāng)divmod(other,self)時(shí)被調(diào)用.
            __rpow__ 反射乘方,使用**運(yùn)算符的
            __rlshift__(self, other) 反射左移,使用<<操作符.
            __rrshift__(self, other) 反射右移,使用>>操作符.
            __rand__(self, other) 反射位與,使用&操作符.
            __ror__(self, other) 反射位或,使用|操作符.
            __rxor__(self, other) 反射異或,使用^操作符.
            增量運(yùn)算
            __iadd__(self, other) 加法賦值
            __isub__(self, other) 減法賦值.
            __imul__(self, other) 乘法賦值
            __ifloordiv__(self, other) 整除賦值,地板除,相當(dāng)于 //= 運(yùn)算符.
            __idiv__(self, other) 除法賦值,相當(dāng)于 /= 運(yùn)算符. python3中不存在
            __itruediv__(self, other) 真除賦值,注意只有 whenfrom __future__ import divisionis,才有效.
            __imod_(self, other) 模賦值,相當(dāng)于 %= 運(yùn)算符.
            __ipow__ 乘方賦值,相當(dāng)于 **= 運(yùn)算符.
            __ilshift__(self, other) 左移賦值,相當(dāng)于 <<= 運(yùn)算符.
            __irshift__(self, other) 左移賦值,相當(dāng)于 >>= 運(yùn)算符.
            __iand__(self, other) 與賦值,相當(dāng)于 &= 運(yùn)算符.
            __ior__(self, other) 或賦值,相當(dāng)于 |= 運(yùn)算符.
            __ixor__(self, other) 異或運(yùn)算符,相當(dāng)于 ^= 運(yùn)算符.
            類型轉(zhuǎn)換魔法
            __int__(self) 轉(zhuǎn)換成整型.
            __long__(self) 轉(zhuǎn)換成長(zhǎng)整型.
            __float__(self) 轉(zhuǎn)換成浮點(diǎn)型.
            __complex__(self) 轉(zhuǎn)換成 復(fù)數(shù)型.
            __oct__(self) 轉(zhuǎn)換成八進(jìn)制.
            __hex__(self) 轉(zhuǎn)換成十六進(jìn)制.
            __index__(self) 當(dāng)對(duì)象被切片時(shí)轉(zhuǎn)換成int型。如果定義了一個(gè)可能被用來(lái)做切片操作的數(shù)值型,就應(yīng)該定義__index__.
            __trunc__(self) 當(dāng) math.trunc(self) 使用時(shí)被調(diào)用.__trunc__返回自身類型的整型截取 (通常是一個(gè)長(zhǎng)整型).
            __coerce__(self, other) 執(zhí)行混合類型的運(yùn)算,如果轉(zhuǎn)換不能完成,應(yīng)該返回None;否則,要返回一對(duì)兩個(gè)元數(shù)的元組self和other, 被操作成同類型。python3被廢棄
            表示類
            __str__(self)  定義當(dāng) str() 被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。
            __repr__(self) 定義 當(dāng) repr()  被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。 str() 和 repr() 的主要區(qū)別是其目標(biāo)群體。 repr() 返回的是機(jī)器可讀的輸出,而 str() 返回的是人類可讀的。
            __unicode__(self)  unicode() 和 str() 很相似,但是返回的是unicode字符串。python3這個(gè)方法已經(jīng)不存在了,并且__bytes__(它的行為與__str__和__unicode__類似)成為新的自帶方法來(lái)構(gòu)造byte數(shù)組
            __format__(self, formatstr) 定義當(dāng)一個(gè)類的實(shí)例被用來(lái)用新式的格式化字符串方法進(jìn)行格式化時(shí)所要產(chǎn)生的行為。
            __hash__(self)  定義當(dāng) hash()被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。它返回一個(gè)整數(shù),用來(lái)在字典中進(jìn)行快速比較。請(qǐng)注意,這通常也承擔(dān)著實(shí)現(xiàn)__eq__。有下面這樣的規(guī)則:a == b 暗示著 hash(a) == hash(b) 。
            __nonzero__(self)  定義當(dāng) bool() 被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。本方法應(yīng)該返回True或者False。python3被命名為bool
            __dir__(self) 定義當(dāng) dir() 被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。該方法應(yīng)該返回一個(gè)屬性的列表給用戶,如果重新定義了__getattr__或__getattribute__或者其它的動(dòng)態(tài)生成屬性,那么它對(duì)類的交互使用是至關(guān)重要的。
            __sizeof__(self) 定義當(dāng) sys.getsizeof() 被一個(gè)類的實(shí)例調(diào)用時(shí)所要產(chǎn)生的行為。該方法應(yīng)該以字節(jié)為單位,返回對(duì)象的大小。
            屬性訪問(wèn)控制
            __getattr__(self, name) 定義如何處理用戶試圖訪問(wèn)一個(gè)不存在(不存在或還沒(méi)創(chuàng)建)屬性的行為。這對(duì)于捕獲或者重定向一般的拼寫(xiě)錯(cuò)誤非常有用,給出訪問(wèn)了不能訪問(wèn)的屬性的警告(如果愿意,還可以推斷并返回那個(gè)屬性。),或者巧妙地處理一個(gè)AttributeError異常。
            __setattr__(self, name, value)  與__getattr__不同,__setattr__是一個(gè)真正的封裝方案。它允許定義當(dāng)給一個(gè)存在或不存在的屬性賦值時(shí)的行為,意味著對(duì)任何屬性值的改變都可以定義一個(gè)規(guī)則。
            __delattr__ 它與__setattr__非常像, 只不過(guò)是用來(lái)刪除而不是設(shè)置屬性。 __detattr__需要預(yù)防措施,就像setattr一樣,當(dāng)被調(diào)用時(shí)可能會(huì)引起無(wú)限遞歸(當(dāng)__delattr__已經(jīng)實(shí)現(xiàn)時(shí),調(diào)用 del self.name 就會(huì)引起無(wú)限的遞歸)。
            __getattribute__(self, name)  只有在新風(fēng)格的類中才會(huì)被使用(所有的新風(fēng)格類在Python最新的版本中,在老版本中,可以子類化object來(lái)獲得一個(gè)新風(fēng)格類。它允許定義一條規(guī)則來(lái)處理無(wú)論什么時(shí)候?qū)傩灾当辉L問(wèn)時(shí)的行為。比如類似于由于其它的伙伴犯錯(cuò)而引起的無(wú)限遞歸(這時(shí)就可以調(diào)用基類的__getattribute__方法來(lái)阻止它)。它也避免了對(duì)__getattr__的依賴,當(dāng)__getattribute__方法已經(jīng)實(shí)現(xiàn)的時(shí)候,__getattr__只有在__getattribute__被明確的調(diào)用或拋出一個(gè)AttributeError異常的時(shí)候才會(huì)被調(diào)用。,不常用。

            容器相關(guān)
            __len__(self) 返回容器的長(zhǎng)度。對(duì)于可變和不可變?nèi)萜鞯膮f(xié)議,這都是其中的一部分。
            __getitem__(self, key) 定義當(dāng)某一項(xiàng)被訪問(wèn)時(shí),使用self[key]所產(chǎn)生的行為。這也是不可變?nèi)萜骱涂勺內(nèi)萜鲄f(xié)議的一部分。如果鍵的類型錯(cuò)誤將產(chǎn)生TypeError;如果key沒(méi)有合適的值則產(chǎn)生KeyError。
            __setitem__(self, key, value) 定義當(dāng)一個(gè)條目被賦值時(shí),使用self[nkey] = value所產(chǎn)生的行為。這也是協(xié)議的一部分。而且,在相應(yīng)的情形下也會(huì)產(chǎn)生KeyError和TypeError。
            __delitem__(self, key) 定義當(dāng)某一項(xiàng)被刪除時(shí)所產(chǎn)生的行為。(例如del self[key])。這只是可變?nèi)萜鲄f(xié)議的一部分。當(dāng)使用一個(gè)無(wú)效的鍵時(shí)必須拋出適當(dāng)?shù)漠惓!?br />__iter__(self) 返回一個(gè)容器迭代器,很多情況下會(huì)返回迭代器,尤其是當(dāng)內(nèi)置的iter()方法被調(diào)用的時(shí)候,以及當(dāng)使用for x in container:方式循環(huán)的時(shí)候。迭代器是它們本身的對(duì)象,它們必須定義返回self的__iter__方法。
            __reversed__(self) 實(shí)現(xiàn)當(dāng)reversed()被調(diào)用時(shí)的行為。應(yīng)該返回序列反轉(zhuǎn)后的版本。僅當(dāng)序列可以是有序的時(shí)候?qū)崿F(xiàn)它,例如對(duì)于列表或者元組。
            __contains__(self, item) 定義了調(diào)用in和not in來(lái)測(cè)試成員是否存在的時(shí)候所產(chǎn)生的行為。可能會(huì)問(wèn)為什么這個(gè)不是序列協(xié)議的一部分?因?yàn)楫?dāng)__contains__沒(méi)有被定義的時(shí)候,Python會(huì)迭代這個(gè)序列,并且當(dāng)找到需要的值時(shí)會(huì)返回True。
            __missing__(self, key) 其在dict的子類中被使用。它定義了當(dāng)一個(gè)不存在字典中的鍵被訪問(wèn)時(shí)所產(chǎn)生的行為。(例如,如果我有一個(gè)字典d,當(dāng)"george"不是字典中的key時(shí),使用了d["george"],此時(shí)d["george"]將會(huì)被調(diào)用)。

            反射
            __instancecheck__(self, instance) 檢查對(duì)象是否是您定義的類的一個(gè)實(shí)例(例.isinstance(instance, class).
            __subclasscheck__(self, subclass) 檢查類是否是定義類的子類 (例.issubclass(subclass, class)).
            可調(diào)用對(duì)象
            __call__(self, [args...]) 允許一個(gè)類的實(shí)例像函數(shù)一樣被調(diào)用 在那些類的實(shí)例經(jīng)常改變狀態(tài)的時(shí)候會(huì)非常有效。“調(diào)用”這個(gè)實(shí)例是一種改變這個(gè)對(duì)象狀態(tài)的直接和優(yōu)雅的做法。

            會(huì)話管理器 包裝一個(gè)with語(yǔ)句來(lái)設(shè)置和清理相應(yīng)對(duì)象的行為
            __enter__(self) 定義了當(dāng)使用with語(yǔ)句的時(shí)候,會(huì)話管理器在塊被初始創(chuàng)建事要產(chǎn)生的行為。請(qǐng)注意,__enter__的返回值與with語(yǔ)句的目標(biāo)或者as后的名字綁定。
            __exit__(self, exception_type, exception_value, traceback)定義了當(dāng)一個(gè)代碼塊被執(zhí)行或者終止后,會(huì)話管理器應(yīng)該做什么。它可以被用來(lái)處理異常、執(zhí)行清理工作或做一些代碼塊執(zhí)行完畢之后的日常工作。如果代碼塊執(zhí)行成功,exception_type,exception_value,和traceback將會(huì)為None。否則,可以選擇處理這個(gè)異常或者是直接交給用戶處理。如果想處理這個(gè)異常的話,請(qǐng)確保__exit__在所有語(yǔ)句結(jié)束之后返回True。如果想讓異常被會(huì)話管理器處理的話,那么就讓其產(chǎn)生該異常

            創(chuàng)建描述器對(duì)象
            __get__(self, instance, owner) 定義了當(dāng)描述器的值被取得的時(shí)候的行為。instance是擁有該描述器對(duì)象的一個(gè)實(shí)例。owner是擁有者本身。
            __set__(self, instance, value) 定義了當(dāng)描述器的值被改變的時(shí)候的行為。instance是擁有該描述器類的一個(gè)實(shí)例。value是要設(shè)置的值。
            __delete__(self, instance) 定義了當(dāng)描述器的值被刪除的時(shí)候的行為。instance是擁有該描述器對(duì)象的一個(gè)實(shí)例。
            復(fù)制
            __copy__(self) copy.copy()返回了對(duì)象的一個(gè)淺拷貝——這意味著,當(dāng)實(shí)例本身是一個(gè)新實(shí)例時(shí),它的所有數(shù)據(jù)都被引用, 因此,對(duì)于淺拷貝中數(shù)據(jù)的更改仍然可能導(dǎo)致數(shù)據(jù)在原始對(duì)象的中的改變。
            __deepcopy__(self, memodict={}) 定義了當(dāng)對(duì)類的實(shí)例調(diào)用copy.deepcopy()時(shí)所產(chǎn)生的行為。copy.deepcopy()返回一個(gè)深拷貝——對(duì)象和其數(shù)據(jù)都被拷貝了。memodict是對(duì)之前被拷貝的對(duì)象的一個(gè)緩存——這優(yōu)化了拷貝過(guò)程并且阻止了對(duì)遞歸數(shù)據(jù)結(jié)構(gòu)拷貝時(shí)的無(wú)限遞歸。要進(jìn)行對(duì)一個(gè)單獨(dú)的屬性進(jìn)行深拷貝時(shí),調(diào)用copy.deepcopy(),并以memodict為第一個(gè)參數(shù)。
            Pickling 序列化 對(duì)象
            __getinitargs__(self)    如果想在類被unpickle的時(shí)候執(zhí)行__init__方法,可重載__getinitargs__方法,它會(huì)返回一個(gè)元組,包含想傳給__init__方法的參數(shù)。注意,這種方法只適用于低版本的Python。
            __getnewargs__(self)  對(duì)于新式類,在unpickle的時(shí)候可以決定傳給__new__方法的參數(shù)。以上方法可以返回一個(gè)包含想傳給__new__方法的參數(shù)元組。
            __getstate__(self)       除了儲(chǔ)存__dict__中的原來(lái)的那些變量,可以自定義使用pickle序列化對(duì)象時(shí)想要儲(chǔ)存的額外屬性。這些屬性將在unpickle文件時(shí)被__setstate__方法使用。
            __setstate__(self, state)     當(dāng)文件被unpickle時(shí),其中保存的對(duì)象屬性不會(huì)直接被寫(xiě)入對(duì)象的__dict中,而是會(huì)被傳入這個(gè)方法。這個(gè)方法和__getstate__是配套的:當(dāng)他們都被定義了的時(shí)候,可以任意定義對(duì)象被序列化存儲(chǔ)時(shí)的狀態(tài)。
            __reduce__(self)          當(dāng)定義擴(kuò)展類(使用C語(yǔ)言實(shí)現(xiàn)的Python擴(kuò)展類)時(shí),可以通過(guò)實(shí)現(xiàn)__reduce__函數(shù)來(lái)控制pickle的數(shù)據(jù)。如果__reduce__()方法被定義了,在一個(gè)對(duì)象被pickle時(shí)它將被調(diào)用。如果它返回一個(gè)字符串,那么pickle在將在全局空間中搜索對(duì)應(yīng)名字的對(duì)象進(jìn)行pickle;它還可以返回一個(gè)元組,包含2-5個(gè)元素: 一個(gè)可以用來(lái)重建該對(duì)象的可調(diào)用對(duì)象,一個(gè)包含有傳給該可調(diào)用對(duì)象參數(shù)的元組,傳給__setstate__方法的參數(shù)(可選),一個(gè)用于待pickle對(duì)象列表的迭代器(譯者注:這些對(duì)象會(huì)被append到原來(lái)對(duì)象的后面)(可選)調(diào)用對(duì)象,一個(gè)包含有傳給該可調(diào)用對(duì)象參數(shù)的元組,傳給__setstate__方法的參數(shù)(可選),一個(gè)用于待pickle對(duì)象列表的迭代器(譯者注:這些對(duì)象會(huì)被append到原來(lái)對(duì)象的后面)(可選),一個(gè)用于待pickle的字典的迭代器(可選)。
            __reduce_ex__(self)  是為兼容性而設(shè)計(jì)的。如果它被實(shí)現(xiàn)了,__reduce_ex__將會(huì)取代__reduce__在pickle時(shí)被執(zhí)行。__reduce__可以同時(shí)被實(shí)現(xiàn)以支持那些不支持__reduce_ex__的老版本pickling API。

            posted on 2020-06-24 20:59 Benjamin 閱讀(526) 評(píng)論(0)  編輯 收藏 引用 所屬分類: python

            9191精品国产免费久久| 久久乐国产综合亚洲精品| 婷婷久久综合九色综合绿巨人| 久久天天躁狠狠躁夜夜96流白浆 | 国产精品成人99久久久久| 亚洲精品tv久久久久| 国产精品一久久香蕉产线看 | 久久精品黄AA片一区二区三区| 伊人情人综合成人久久网小说| 国产免费久久精品丫丫| 久久精品免费观看| 国产AⅤ精品一区二区三区久久| 久久久精品免费国产四虎| 麻豆一区二区99久久久久| 狠狠色婷婷久久综合频道日韩| 青青草原综合久久大伊人| 成人综合久久精品色婷婷| 亚洲欧洲日产国码无码久久99| 99蜜桃臀久久久欧美精品网站| 亚洲色欲久久久综合网东京热| 日韩人妻无码精品久久久不卡 | 精品欧美一区二区三区久久久| 久久精品国产一区| 久久天天躁狠狠躁夜夜不卡 | 久久精品人人做人人爽97| 一级做a爱片久久毛片| 久久国产视屏| 国产精品久久久久免费a∨| 久久精品无码一区二区WWW| 久久久久人妻精品一区二区三区 | 久久久久99精品成人片试看| 久久免费小视频| 色综合久久88色综合天天 | 看久久久久久a级毛片| 嫩草影院久久国产精品| 思思久久99热只有频精品66| 亚洲av伊人久久综合密臀性色| 久久电影网一区| 久久人人爽人人爽人人片AV不| 91精品国产91久久久久福利| 久久嫩草影院免费看夜色|