單例模式【python】
在python中,如需讓一個類只能創建一個實例對象,怎麽能才能做到呢?
思路:1.通過同一個類創建的不同對象,都讓他們指向同一個方向。
2.讓個類只能創建唯一的實例對象。
方法:用到 _ _new_ _ 方法
‘‘‘定義一個類‘‘‘
讓這個類自己通過new方法創建一個對象
並在每次創建對象時進行判斷,如果變量 實例對象 沒有 那就創建,否則指向已創建單例對象
代碼示例:
# coding=utf-8
class CarFactory(object):
"""定義一個汽車廠類"""
__first_new = True # 定義一個變量 首次創建 為真
__instance = None # 定義一個變量 單例對象 沒有
def __new__(cls):
"""定義一個__new__方法"""
if cls.__first_new: # 如果變量:首次創建 為真
cls.__instance = object.__new__(cls) # 則創建當前實例對象 cls.__instance 指向 object.__new__(cls)
cls.__first_new = False # 創建完一個對象後讓他為 False
return cls.__instance # 返回創建的實例對象
else:
return cls.__instance # 如果變量:首次創建 為False 直接返回上一次實力對象
feng_tian = CarFactory()
da_zhong = CarFactory()
print(feng_tian)
print(da_zhong)
輸出:
指向同一個方向
單例模式【python】