И тут я понял, что не шарю вообще за ООП, особенно в питоне. Или спать уже хочу. Кооороооочеее
Хочу замутить несколько синглтон классов (3). Возьмем изи пример:
class Singleton:
__singleton = None
@classmethod
def get_instance(cls):
if cls.__singleton is not None:
return cls.__singleton
else:
raise RuntimeError(f'{cls.__name__} not initialized')
Вооопрооос, если я хочу несколько синглтон классов и не хочу дублировать get_instance
в каждом из нём, то как обобщить?
Если вынести выше и унаследоваться, то каждый класс будет юзать один экземляр родителя и будет полная белеберда. У всех будет доступ к инстансу обобщённого класса-родителя, а не текущего класса
UPD. Офигенно объяснил. Короче поле __singleton
будет иметь общее значение у всех классов, что унаследовались от Singleton
UPD2. Ну точнее как, get_instance
будет возвращать общее поле родителя, а не текущего класса. А как сделать так, чтоб с текущего класса( не хооочууу в каждом классе get_instance
иметь(
Что-то я уснул по щелку пальцев без задней мысли об этом, утром начали приходить нотификейты, разбудившие меня. Увлекательно предисловие.
Это мне писали "нафига тебе аж 3 синглтона?".
Мне что-то в голову ударило, что создать класс и там в полях инициализировать свои сервисы (которые я хотел переделать на синглтон) и потом шарить один экземляр этого класса с сервисами на всё приложение не оч хорошо.
class Services:
def __init__(track_watcher=TrackWatcher()):
self.track_watcher = track_watcher
services = Services()
А потом где надо
from services import services
services.track_watcher.subscribe(update, context, track)
Когда мне сказали, что это Dependency injection - я ушёл гуглить. То, что нагуглил, вроде подходит под моё. Можно не переписывать ✨
Надо доразобраться с DI
UPD. Собсна видос покрывает чуть ли не всё, что надо знать.
Dependency Injection - Jakob Jenkov
Пока без понятия как более правильно такое делать в питоне и делают ли. Вон кто-то аж либу юзает: Inject - PyPi, которая в своём описании "тонко" намекает the python way, the good way
31.12.2023 — Итоги Года
Итоги Года 202331.12.2022 — Итоги Года
Итоги Года 202231.12.2021 — Итоги Года
Итоги Года 202131.12.2020 — Итоги Года
Итоги Года 2020