您好,登錄后才能下訂單哦!
python中__init__ 和__new__有什么區(qū)別?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
python的五大特點(diǎn):1.簡(jiǎn)單易學(xué),開(kāi)發(fā)程序時(shí),專(zhuān)注的是解決問(wèn)題,而不是搞明白語(yǔ)言本身。2.面向?qū)ο?,與其他主要的語(yǔ)言如C++和Java相比, Python以一種非常強(qiáng)大又簡(jiǎn)單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無(wú)需修改就可以在各種平臺(tái)上運(yùn)行。4.解釋性,Python語(yǔ)言寫(xiě)的程序不需要編譯成二進(jìn)制代碼,可以直接從源代碼運(yùn)行程序。5.開(kāi)源,Python是 FLOSS(自由/開(kāi)放源碼軟件)之一。
1、作用不同
__init__() 初始化方法 和 __new__(),通過(guò)類(lèi)創(chuàng)建對(duì)象時(shí),自動(dòng)觸發(fā)執(zhí)行。__new__ 是用來(lái)創(chuàng)建類(lèi)并返回這個(gè)類(lèi)的實(shí)例,而 __init__ 只是將傳入的參數(shù)來(lái)初始化該實(shí)例。
2、概念不同
__new__() 創(chuàng)建對(duì)象時(shí)調(diào)用,會(huì)返回當(dāng)前對(duì)象的一個(gè)實(shí)例
__init__() 創(chuàng)建完對(duì)象后調(diào)用,對(duì)當(dāng)前對(duì)象的一些實(shí)例初始化,無(wú)返回值
3、實(shí)例
# __init__ 、 __new__ class Student(object): def __init__(self, name, age): print('__init__() called') self.name = name self.age = age def __new__(cls, *args, **kwargs): print('__new__() called') print(cls, args, kwargs) return super().__new__(cls) # ipython 測(cè)驗(yàn) In [26]: s1 = Student('hui', age=21) __new__() called <class '__main__.Student'> ('hui',) {'age': 21} __init__() called In [27]: s2 = Student('jack', age=20) __new__() called <class '__main__.Student'> ('jack',) {'age': 20} __init__() called
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。