2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
這個(gè)網(wǎng)上有很多的,你可以搜一搜,單例設(shè)計(jì)模式很多面試官都會(huì)考的,最好是記住一兩個(gè),我下面寫一個(gè)例子給你看一下
使用__new__方法
在__new__方法中把類實(shí)例綁定到類變量_instance上,如果cls._instance為None表示該類還沒有實(shí)例化過,實(shí)例化該類并返回。如果cls_instance不為None表示該類已實(shí)例化,直接返回cls_instance
class SingleTon(object):
def __new__(cls,*args,**kwargs):
if not hasattr(cls,'_instance'):
cls._instance = object.__new__(cls,*args,**kwargs)
return cls._instance
class TestClass(SingleTon):
a = 1
test1 = TestClass()
test2 = TestClass()
print test1.a,test2.a
test1.a=2
print test1.a,test2.a
print id(test1),id(test2)

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用裝飾器,建立過實(shí)例的就放到instances里面,下次建立的時(shí)候先檢查里面有沒有
def SingleTon(cls,*args,**kwargs):
instances = {}
print instances
def _singleton():
if cls not in instances:
instances[cls] = cls(*args,**kwargs)
print instances
return instances[cls]
return _singleton
@SingleTon
class LastClass(object):
a = 1
test1 = LastClass()
print test1.a
test2 = LastClass()
print test2.a
- 2 回答
- 0 關(guān)注
- 527 瀏覽
添加回答
舉報(bào)