python __init__與 __new__的區(qū)別
一、構(gòu)造函數(shù) __init__ 與__new__
__new__ 作用: 創(chuàng)建對(duì)象,并分配內(nèi)存
__init__ 作用: 初始化對(duì)象的值
注意:
1、與java相比,java只有一個(gè)構(gòu)造器。而python __new__ 方法與 __init__ 方法 組合,才能稱為一個(gè)對(duì)應(yīng)類似于java中的構(gòu)造器
2、先執(zhí)行__new__ ,創(chuàng)建對(duì)象,并分配內(nèi)存.
再執(zhí)行 __init__,初始化對(duì)象的值。
3、任何類都繼承于object 類。
我們一般不重寫__new__ 方法。 我們不重寫,就默認(rèn)調(diào)用父類 的 __new__ 方法。
4、__new__ 方法 ,一定要return 一個(gè)對(duì)象。 如果自己重寫__new__ 方法,但是沒有return出一個(gè)對(duì)象。連對(duì)象都沒創(chuàng)建成功,后面是不會(huì)進(jìn)行初始化對(duì)象的。
例子1:
class Person(object):
def __init__(self,name,id,sex):
self.name = name
self.id = id
self.sex = sex
print("初始化對(duì)象的值")
def __new__(cls, *args, **kwargs):
print("開始創(chuàng)建對(duì)象,并分配內(nèi)存")
if __name__ == '__main__':
p = Person("張三",12,"男")
運(yùn)行結(jié)果,只執(zhí)行了__new__ 方法,并沒有執(zhí)行 __init__方法。
為啥呢? 因?yàn)閚ew函數(shù),沒有返回一個(gè) 對(duì)象。
正確的用法
class Person(object):
def __init__(self,name,id,sex):
self.name = name
self.id = id
self.sex = sex
print("初始化對(duì)象的值")
def __new__(cls, *args, **kwargs):
print("開始創(chuàng)建對(duì)象,并分配內(nèi)存")
self = super().__new__(cls)
return self
if __name__ == '__main__':
p = Person("張三",12,"男")打印結(jié)果:
開始創(chuàng)建對(duì)象,并分配內(nèi)存
初始化對(duì)象的值
到此這篇關(guān)于python __init__與 __new__的區(qū)別的文章就介紹到這了,更多相關(guān)python __init__與 __new__內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python面向?qū)ο笾衉_new__和__init__區(qū)別
- python中__new__函數(shù)的具體使用
- Python中的?__init__、__new__?和?__call__示例詳解
- Python中的魔術(shù)方法__new__詳解
- Python中__new__()方法適應(yīng)及注意事項(xiàng)詳解
- python中__new__和__init__的實(shí)現(xiàn)
- 詳解Python中__new__和__init__的區(qū)別與聯(lián)系
- 詳解Python中__new__方法的作用
- Python 中類的構(gòu)造方法 __New__的妙用
- Python 中 __new__的實(shí)現(xiàn)示例
相關(guān)文章
Pandas中map(),applymap(),apply()函數(shù)的使用方法
本文主要介紹了Pandas中map(),applymap(),apply()函數(shù)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)
本文主要基于Pytorch深度學(xué)習(xí)框架,實(shí)現(xiàn)LSTM神經(jīng)網(wǎng)絡(luò)模型,用于時(shí)間序列的預(yù)測(cè)2021-05-05
Python中實(shí)現(xiàn)常量(Const)功能
這篇文章主要介紹了Python中實(shí)現(xiàn)常量(Const)功能,python語言本身沒有提供const,本文使用一個(gè)類來實(shí)現(xiàn)常量定義功能,并介紹了使用方法,需要的朋友可以參考下2015-01-01
Python for Informatics 第11章之正則表達(dá)式(四)
這篇文章主要介紹了Python for Informatics 第11章之正則表達(dá)式(四) 的相關(guān)資料,需要的朋友可以參考下2016-04-04
python多線程調(diào)用exit無法退出的解決方法
今天小編就為大家分享一篇python多線程調(diào)用exit無法退出的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python神經(jīng)網(wǎng)絡(luò)slim常用函數(shù)訓(xùn)練保存模型
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用slim函數(shù)進(jìn)行模型的訓(xùn)練及保存模型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python腳本實(shí)現(xiàn)掃描指定目錄下.py文件并提取import語句
這篇文章主要為大家詳細(xì)介紹了如何使用Python腳本實(shí)現(xiàn)掃描指定目錄下.py文件并提取import語句,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-03-03

