# __new__ 方法
class Dog(object):
def __init__(self):
print("---init方法---")
def __del__(self):
print("---del方法---")
def __str__(self):
print("---str方法---")
# 創建對象時就會被調用
# 沒重載之前,默認是調用父類的 __new__
def __new__(cls): # cls 此時時Dog只想的那個類對象
print("---new方法---")
print(id(cls))
return object.__new__(cls)
print(id(Dog))
d = Dog();
"""
1. 調用 __new__ 來創建對象,然后找了一個變量來接收__new__的返回值,這個返回值表示,創建出來的對象的引用
2. 調用__init__(剛剛常見出來的對象的引用)
3. 返回對象的引用
所以 __new__ 只負責創建 , __init__ 只負責初始化
而Java的構造方法等于 __new__() + __init__()
"""
# 單例模式 實現
class Dog(object):
__instance = None;
# 創建對象時就會被調用
# 沒重載之前,默認是調用父類的 __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__ 方法/單例模式
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- “Python 中的類都是單例模式?” 一天,一同事問我這樣一個問題。這是一個奇怪的問題,可能你也這么認為。這里先...
- 1.1設計模式 設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發人員經...
- new方法是Python新式類引入的,通常用于控制生成一個新實例的過程。它是類級別的靜態方法,是在創建實例對象前執...