亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python中, 仿照經典代碼實現(xiàn)單例, 卻出現(xiàn)了不是單例的的狀態(tài), 代碼哪里出錯了 ?

瀏覽:131日期:2022-09-02 16:42:21

問題描述

實際現(xiàn)象

期望實現(xiàn)單例, 保持某個屬性全局唯一

預期現(xiàn)象

仿照經典實現(xiàn)代碼, 卻出現(xiàn)了不是單例的情況

我要做什么

實現(xiàn)scheduler全局唯一, 不派生過多的scheduler

重現(xiàn)步驟

拷貝代碼

運行之

查看內存地址

相關代碼

仿照經典實現(xiàn)

from apscheduler.schedulers.background import BackgroundSchedulerclass Borg(object):__shared_state = {} def __init__(self):self.__dict__ = Borg.__shared_stateself.scheduler = BackgroundScheduler()s1 = Borg().schedulers2 = Borg().schedulerprint s1, s2# <apscheduler.schedulers.background.BackgroundScheduler object at 0x02623DF0> # <apscheduler.schedulers.background.BackgroundScheduler object at 0x02D801D0>

我自己想的辦法

from apscheduler.schedulers.background import BackgroundSchedulerclass Borg(object): @classmethod def get_scheduler(cls):try: cls_scheduler = cls.schedulerexcept AttributeError as e: cls.scheduler = BackgroundScheduler() return cls.schedulerelse: return cls_schedulerbs1 = Borg.get_scheduler()bs2 = Borg.get_scheduler()bs3 = Borg.get_scheduler()print bs1, bs2, bs3# <apscheduler.schedulers.background.BackgroundScheduler object at 0x02752D70> # <apscheduler.schedulers.background.BackgroundScheduler object at 0x02752D70> # <apscheduler.schedulers.background.BackgroundScheduler object at 0x02752D70>上下文環(huán)境

產品版本: Python 2.7 APScheduler最新

操作系統(tǒng): Linux

Github鏈接, 經典實現(xiàn): https://github.com/faif/pytho...

問題解答

回答1:

經典例子這個不能算是純單例,而是具有單例特性的Brog模式。

其魔法在于利用類Brog共享的類屬性__shared_state的字典,后面創(chuàng)建的實例會覆蓋前面實例的__dict__。

s1 = Borg().schedulers2 = Borg().scheduler

創(chuàng)建一個實例s1,同時初始化屬性scheduler,此時的地址是0x02623DF0,再創(chuàng)建一個實例s2,然后修改了屬性scheduler,地址為0x02D801D0。s1和s2其實是兩個不同實例,只不過他們的屬性共用類屬性,看起來就像單例的效果。

如果把代碼改成這樣,應該就能看得更清楚過程:

s1 = Borg()print(s1.scheduler)s2 = Borg()print(s1.scheduler)print(s2.scheduler)print(s1.scheduler is s2.scheduler)

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 看欧美黄色片 | 精品一区二区三区高清免费观看 | 欧美亚洲视频一区 | 国产乱小说| 亚洲国产成人精品女人久久久 | 国产精品色哟哟 | x8x8国产精品视频 | 欧美日韩一区二区三区毛片 | 亚洲天天在线日亚洲洲精 | 亚洲欧美日韩久久一区 | 日韩美女一级毛片 | 欧美日韩成人午夜免费 | 国产精品观看 | 99精品国产兔费观看66 | 久青草国产手机在线视频 | 久久七国产精品 | 国产欧美一区视频在线观看 | 91亚洲精品视频 | 亚洲三级影视 | 国产国语特级一级aa毛片 | 久久草在线观看 | 最新97超级碰碰碰碰久久久久 | a毛片免费视频 | 最近最新中文字幕在线第一页 | 人人爽久久涩噜噜噜蜜桃 | 大香蕉毛片 | 国产三区二区 | 伊在人香蕉99久久 | 含羞草1000成人免费视频 | 午夜性刺激小说 | 特大一级aaaaa毛片 | 国产高清好大好夹受不了了 | 久久久精品国产免费观看同学 | 国产1024精品视频专区免费 | 久久香蕉国产线看免费 | 亚洲精品美女久久久久99 | 国产线视频精品免费观看视频 | 黄色片子一级 | 看免费黄色一级视频 | 亚洲六月丁香六月婷婷花 | 1a级毛片免费观看 |