# __new__ 方法
class Dog(object):
def __init__(self):
print("---init方法---")
def __del__(self):
print("---del方法---")
def __str__(self):
print("---str方法---")
# 創(chuàng)建對象時就會被調(diào)用
# 沒重載之前,默認是調(diào)用父類的 __new__
def __new__(cls): # cls 此時時Dog只想的那個類對象
print("---new方法---")
print(id(cls))
return object.__new__(cls)
print(id(Dog))
d = Dog();
"""
1. 調(diào)用 __new__ 來創(chuàng)建對象,然后找了一個變量來接收__new__的返回值,這個返回值表示,創(chuàng)建出來的對象的引用
2. 調(diào)用__init__(剛剛常見出來的對象的引用)
3. 返回對象的引用
所以 __new__ 只負責創(chuàng)建 , __init__ 只負責初始化
而Java的構(gòu)造方法等于 __new__() + __init__()
"""
# 單例模式 實現(xiàn)
class Dog(object):
__instance = None;
# 創(chuàng)建對象時就會被調(diào)用
# 沒重載之前,默認是調(diào)用父類的 __new__
def __new__(cls): # cls 此時時Dog只想的那個類對象
print("---new方法---")
if cls.__instance == None:
cls.__instance = object.__new__(cls);
return cls.__instance ;
a = Dog();
b = Dog();
print( id(a) == id(b) )
python __new__ 方法/單例模式
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- python實現(xiàn)單例與new()方法 new 和 init 方法 _ new _ 方法進行分配空間 _ init ...
- “Python 中的類都是單例模式?” 一天,一同事問我這樣一個問題。這是一個奇怪的問題,可能你也這么認為。這里先...
- 1.1設(shè)計模式 設(shè)計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經(jīng)...
- new方法是Python新式類引入的,通常用于控制生成一個新實例的過程。它是類級別的靜態(tài)方法,是在創(chuàng)建實例對象前執(zhí)...