摘要:概述和是類實例化的過程中被調用的方法,負責對象的創建,相當于構造器或者構造函數負責對象初始化。使用頻率上,較多會被使用。而類似一般的實例方法,第一個參數是,表示實例。以上代碼和經驗僅在得到驗證。
概述
new 和 init 是類實例化的過程中被調用的方法, new 負責對象的創建,相當于構造器或者構造函數; init 負責對象初始化。 使用頻率上, init 較多會被使用。
class A(object): def __new__(cls): return object.__new__(cls) def __init__(self): self.instance_method() def instance_method(self): print "success!" newA = A()區別 參數
new 的第一個參數是 cls,表示類本身。
而 init 類似一般的實例方法, 第一個參數是 self,表示實例。我們可以看到 init 方法運行之前, 實例已經可以被使用了(self參數)。實例上的其他的方法也是可以使用的了。
調用時機當我們創建類的對象時, new 先被調用,返回一個對象,對象引用作為參數傳遞給 init__, 然后對象屬性被初始化。__init 方法不能返回任何數據。
__new__ --->(創建對象) --> __init__(self)使用
只有很少的時候需要自己編寫 new 方法,比如單例模式。大多數情況下,只需要關心實例的初始化,初始化過程中屬性的分配,以及是否調用其他的實例方法。
以上代碼和經驗僅在 Python(2.7) 得到驗證。文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40928.html
摘要:中的類都是單例模式一天,一同事問我這樣一個問題。與方法屬于新式類,即屬于類。方法在實例被創建之后被調用,該方法僅僅是對方法創建的實例進行一些初始化操作。需要注意的是,在重寫方法與方法的參數應該保持一致,否則會有發生。 Python 中的類都是單例模式? 一天,一同事問我這樣一個問題。這是一個奇怪的問題,可能你也這么認為。這里先不做解釋,我們先來看看 __new__ 和 __init__...
摘要:本文旨在澄清里和的概念。的創建并返回的這個實例,是裸的。然后我們的的再接手這個裸的實例去進一步加工,比如加上各種,或再執行一些別的這個過程就是。如果用了,那么就可以無視這個,因為就可以理解成一個普通的函數表示這個類本身。 本文旨在澄清 python 里 __new__ vs __init__ 和 cls vs self 的概念。 很多初學者會困擾,python的魔法函數 __new_...
摘要:實現實現單例模式有多種方案使用提供了非常易用的類,只要繼承它,就會成為單例。參考鏈接單例模式最后,感謝女朋友支持。 問題:現代化的巧克力工廠具備計算機控制的巧克力鍋爐。鍋爐做的事情就是把巧克力和牛奶融在一起,然后送到下一個階段,以制成巧克力棒。下邊是一個巧克力公司鍋爐控制器的代碼,仔細觀察一下,這段代碼有什么問題? class ChocolateBoiler(object): ...
摘要:在任何新式類的方法,不能調用自身的來制造實例,因為這會造成死循環。因此必須避免類似以下的寫法在中避免或。注意如果沒有返回即當前類的實例,那么當前類的方法是不會被調用的。是最基本的用于比較的魔術方法。 1、__ new__, __ init__, __ call__ __ new__(cls, *args, **kwargs) 創建對象時調用,返回當前對象的一個實例;注意:這里的第一個...
摘要:必須放一個表情包,太魔性了第題修改以下代碼,使得下面的代碼調用類的方法原始代碼基礎方法衍生方法面試要點類繼承,只要通過方法指定類對象就可以了。必須放一個表情包,太魔性了! showImg(https://user-gold-cdn.xitu.io/2019/5/23/16ae22b8813bdd82); 第1題: 修改以下Python代碼,使得下面的代碼調用類A的show方法); 原始代碼 ...
閱讀 3753·2021-08-11 11:16
閱讀 1621·2019-08-30 15:44
閱讀 1995·2019-08-29 18:45
閱讀 2267·2019-08-26 18:18
閱讀 996·2019-08-26 13:37
閱讀 1565·2019-08-26 11:43
閱讀 2109·2019-08-26 11:34
閱讀 372·2019-08-26 10:59