singleton на python
📁 python, ии
Релизовал singleton с Wiki()
Мой код:
class SpriteManager(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(SpriteManager, cls).__new__(cls) retu cls.instance def __init__(self): self.setSprite = set()Каждый раз при вызове SpriteManager() вызывается конструктур. Согласно концепции singleton, инициализация должна проходить один раз при первом вызове. Как сделать,что бы конструктор вызывался один раз?
Могу предложить такой вариант:
class SpriteManager(object): __instance = None @staticmethod def inst(): if SpriteManager.__instance == None: SpriteManager.__instance = SpriteManager() retu SpriteManager.__instance #single call check def __init__(self): print(""Constructor called!"")a = SpriteManager.inst()b = SpriteManager.inst()print(a is b)По выводу видим, что конструктор вызывается только один раз:
Constructor called!TrueДоступ к синглтону осуществляем через функцию inst(), например так:
SpriteManager.inst().update() Войдите чтобы оставить ответ