Python3 單例模式問題

2021-10-21 14:55:47 字數 1812 閱讀 2816

單例模式,也叫單子模式,是一種常用的軟體設計模式,屬於建立型模式的一種。在應用這個模式時,單例物件的類必須保證只有乙個例項存在。許多時候整個系統只需要擁有乙個的全域性物件,這樣有利於我們協調系統整體的行為。比如在某個伺服器程式中,該伺服器的配置資訊存放在乙個檔案中,這些配置資料由乙個單例物件統一讀取,然後服務程序中的其他物件再通過這個單例物件獲取這些配置資訊。這種方式簡化了在複雜環境下的配置管理。

1 使用__new__方法

class

singleton

(object)

: def __new__

(cls,

*args,

**kw)

:if not hasattr

(cls,

'_instance'):

o=super

(singleton, cls)

cls._instance = o.

__new__

(cls,

*args,

**kw)

return cls._instance

class

myclass

(singleton)

:k =

10

2 共享屬性

建立例項時把所有例項的__dict__指向同乙個字典,這樣它們具有相同的屬性和方法.

class

singleton

(object)

: _state =

def __new__

(cls,

*args,

**kw)

: o =

super

(singleton, cls)

.__new__

(cls,

*args,

**kw)

o.__dict__ = cls._state

return o

class

myclass2

(singleton)

:k =

10

3 裝飾器版本

def singleton

(cls)

: instances =

def getinstance

(*args,

**kw)

:if cls not in instances:

instances[cls]

=cls

(*args,

**kw)

return instances[cls]

return getinstance

@singleton

class

myclass:k

=10

4 import方法作為python的模組是天然的單例模式

# mysingleton.py

class

my_singleton

(object)

: def foo

(self)

:print

(『foo』)

my_singleton =

my_singleton()

my_singleton.

foo(

)# to use

from mysingleton import my_singleton

my_singleton.

foo(

)

以上就是python3 單例模式的一些問題了。

python3單例模式

單例模式是某個類在整個系統中只存在乙個例項的一種設計模式。使用單例模式的好處 單例模式不僅可以減少記憶體資源占用,而且因為只初始化一次,還可以加快執行效能。例如當程式通過乙個類來讀取配置資訊,而程式多個地方需要使用配置資訊,這時整個程式執行過程中只需乙個例項物件即可,可減少占用記憶體資源,同時還可以...

python3中的單例模式Singleton

usr bin env python coding utf 8 date 2019 01 21 09 09 09 author cdl 1217096231 qq.com link version id 單例模式singleton 一種常見的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存...

python3 魔術方法之單例模式(四)

class singleclass object instance 0def new cls,args,kwargs if not cls.instance cls.instance object new cls,args,kwargs return cls.instance return cls....