{"rsdb":{"rid":"239763","subhead":"","postdate":"0","aid":"165215","fid":"54","uid":"1","topic":"1","content":"
# \u4f7f\u7528Python\u5b9e\u73b0\u5355\u4f8b\u6a21\u5f0f
# \u65b9\u6cd5\u4e00: \u4f7f\u7528__new__\u65b9\u6cd5
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
# \u65b9\u6cd5\u4e8c: \u4f7f\u7528\u88c5\u9970\u5668(decorator)
def SingleTon1(cls, *args, **kwargs):
instances = {}
def _singleTon():
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return _singleTon
@SingleTon1
class TestClass1(object):
a = 1
# \u5171\u4eab\u5c5e\u6027 \u5c5e\u6027\u662f\u5171\u4eab\u7684,\u4f46\u662f\u5e76\u975e\u5355\u4f8b\u6a21\u5f0f
class SingleTon3(object):
_state = {}
def __new__(cls, *args, **kwargs):
obj = object.__new__(cls, *args, **kwargs)
obj.__dict__ = cls._state
return obj
class TestClass3(SingleTon3):
a = 1
test1 = TestClass3()
test2 = TestClass3()
test1.a = 2
print(test1.a)
print(test2.a)
print(test1)
print(test2)<\/p>
","orderid":"0","title":"Python \u5b9e\u73b0\u5355\u4f8b\u6a21\u5f0f","smalltitle":"","mid":"0","fname":"linux\u7f16\u7a0b\u57fa\u7840","special_id":"0","bak_id":"0","info":"0","hits":"1462","pages":"1","comments":"0","posttime":"2017-10-18 09:07:52","list":"1508288872","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"Python<\/A> \u5b9e\u73b0<\/A> \u5355\u4f8b<\/A> \u6a21\u5f0f<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"113.108.110.181","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"Python \u5b9e\u73b0\u5355\u4f8b\u6a21\u5f0f","lastview":"1708214082","digg_num":"1595","digg_time":"1710835531","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}