2 回答

TA貢獻1780條經驗 獲得超5個贊
這個網上有很多的,你可以搜一搜,單例設計模式很多面試官都會考的,最好是記住一兩個,我下面寫一個例子給你看一下
使用__new__方法
在__new__方法中把類實例綁定到類變量_instance上,如果cls._instance為None表示該類還沒有實例化過,實例化該類并返回。如果cls_instance不為None表示該類已實例化,直接返回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貢獻1946條經驗 獲得超4個贊
使用裝飾器,建立過實例的就放到instances里面,下次建立的時候先檢查里面有沒有
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 關注
- 513 瀏覽
添加回答
舉報