python __init__與 __new__的區(qū)別
一、構(gòu)造函數(shù) __init__ 與__new__
__new__ 作用: 創(chuàng)建對象,并分配內(nèi)存
__init__ 作用: 初始化對象的值
注意:
1、與java相比,java只有一個構(gòu)造器。而python __new__ 方法與 __init__ 方法 組合,才能稱為一個對應(yīng)類似于java中的構(gòu)造器
2、先執(zhí)行__new__ ,創(chuàng)建對象,并分配內(nèi)存.
再執(zhí)行 __init__,初始化對象的值。
3、任何類都繼承于object 類。
我們一般不重寫__new__ 方法。 我們不重寫,就默認(rèn)調(diào)用父類 的 __new__ 方法。
4、__new__ 方法 ,一定要return 一個對象。 如果自己重寫__new__ 方法,但是沒有return出一個對象。連對象都沒創(chuàng)建成功,后面是不會進(jìn)行初始化對象的。
例子1:
class Person(object):
def __init__(self,name,id,sex):
self.name = name
self.id = id
self.sex = sex
print("初始化對象的值")
def __new__(cls, *args, **kwargs):
print("開始創(chuàng)建對象,并分配內(nèi)存")
if __name__ == '__main__':
p = Person("張三",12,"男")
運行結(jié)果,只執(zhí)行了__new__ 方法,并沒有執(zhí)行 __init__方法。
為啥呢? 因為new函數(shù),沒有返回一個 對象。
正確的用法
class Person(object):
def __init__(self,name,id,sex):
self.name = name
self.id = id
self.sex = sex
print("初始化對象的值")
def __new__(cls, *args, **kwargs):
print("開始創(chuàng)建對象,并分配內(nèi)存")
self = super().__new__(cls)
return self
if __name__ == '__main__':
p = Person("張三",12,"男")打印結(jié)果:
開始創(chuàng)建對象,并分配內(nèi)存
初始化對象的值
到此這篇關(guān)于python __init__與 __new__的區(qū)別的文章就介紹到這了,更多相關(guān)python __init__與 __new__內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中的?__init__、__new__?和?__call__示例詳解
- Python中的魔術(shù)方法__new__詳解
- Python中__new__()方法適應(yīng)及注意事項詳解
- python中__new__和__init__的實現(xiàn)
- Python中class內(nèi)置方法__init__與__new__作用與區(qū)別解析
- 詳解Python中__new__方法的作用
- Python 中類的構(gòu)造方法 __New__的妙用
- Python中__new__和__init__的區(qū)別與聯(lián)系
- Python 用__new__方法實現(xiàn)單例的操作
- python中__new__函數(shù)的具體使用
相關(guān)文章
在Python中使用__slots__方法的詳細(xì)教程
這篇文章主要介紹了在Python中使用__slots__方法的詳細(xì)教程,__slots__方法是Python的一個重要內(nèi)置類方法,代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04
pytorch之torch_scatter.scatter_max()用法
這篇文章主要介紹了pytorch之torch_scatter.scatter_max()用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實現(xiàn)
這篇文章主要介紹了numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
使用Python和FastAPI實現(xiàn)MinIO斷點續(xù)傳功能
在分布式存儲和大數(shù)據(jù)應(yīng)用中,斷點續(xù)傳是一個重要的功能,它允許大文件上傳在中斷后可以從中斷點恢復(fù),而不是重新上傳整個文件,本文將介紹如何使用Python封裝MinIO的斷點續(xù)傳方法,需要的朋友可以參考下2024-12-12
python使用urllib模塊和pyquery實現(xiàn)阿里巴巴排名查詢
這篇文章主要介紹了python庫urllib及pyquery基本東西的應(yīng)用,實現(xiàn)阿里巴巴關(guān)鍵詞排名的查詢,其中涉及到urllib代理的設(shè)置,pyquery對html文檔的解析2014-01-01
Python+Opencv實現(xiàn)計算閉合區(qū)域面積
這篇文章主要介紹了利用Python?Opencv計算閉合區(qū)域的面積的原理以及實現(xiàn)代碼,文中的講解詳細(xì)易懂,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-03-03

