国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

Python中, 仿照經典代碼實現單例, 卻出現了不是單例的的狀態, 代碼哪里出錯了 ?

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

問題描述

實際現象

期望實現單例, 保持某個屬性全局唯一

預期現象

仿照經典實現代碼, 卻出現了不是單例的情況

我要做什么

實現scheduler全局唯一, 不派生過多的scheduler

重現步驟

拷貝代碼

運行之

查看內存地址

相關代碼

仿照經典實現

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>上下文環境

產品版本: Python 2.7 APScheduler最新

操作系統: Linux

Github鏈接, 經典實現: https://github.com/faif/pytho...

問題解答

回答1:

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

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

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

創建一個實例s1,同時初始化屬性scheduler,此時的地址是0x02623DF0,再創建一個實例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 編程
相關文章:
主站蜘蛛池模板: 亚洲视频在线观看网址 | 亚洲热播 | 精品国产一区二区三区在线观看 | 国产精品高清全国免费观看 | 欧美性色高清生活片 | 日本三级网站在线观看 | 国产欧美日韩综合二区三区 | 久久久免费视频观看 | 亚洲免费视频观看 | 国产一二三区在线 | 高清欧美性狂猛bbbbbbxxxx | 久青草青综合在线视频 | 亚洲一区二区三区欧美 | 99久久久免费精品免费 | 国产精品毛片 | 日本视频一区二区三区 | 日本高清在线不卡 | 国产精品久久久久久久久久日本 | 日本免费观看的视频在线 | 51国产偷自视频区视频手机播器 | 亚洲综合色一区二区三区小说 | 91精品国产高清久久久久久91 | 日韩欧美高清在线观看 | 午夜性生活视频 | 亚洲狠狠狠一区二区三区 | 国产一区二区三区在线看 | 性生话一级国产片 | 免费一级a毛片在线播放 | 成人午夜视频在线观 | 国产精品久久久久无毒 | 欧美三级视频在线观看 | 一区二区亚洲精品 | 欧洲免费无线码二区5 | 欧美大片一级特黄 | 成人在线第一页 | 2020夜夜操| 久久久久久久久久久久久久久久久久 | 亚洲第一黄色网 | 国产午夜免费视频 | 久久精品中文字幕第一页 | 欧美性色黄在线视 |