1. 程式人生 > >單例模式【python】

單例模式【python】

bsp zhong factory 單例 單例模式 返回 一個 判斷 模式

  在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】