объект этого класса. Но иногда встречаются примеры кода, где в нужном классе упоминается функция @classmethod get_instance(cls, *args). И получают уже через эту функцию инстанс класса. Сам вопрос, в каких случах необходимо использовать эту функцию для получения инстанса? Что простое получение объекта object = A() не трушный способ?
Это нужно что сделать что-то с самым классом (аттрибуты, методы), то есть изменение повлияет на самого класса и на всех инстансов этого класса (+ наследованных классов, если не ошибаюсь) class A: DEBUG = False @classmethod def change_mode(cls, flag: bool) -> None: cls.DEBUG = flag def main(self) -> Any: if self.DEBUG: print('Started:', self)
Ты можешь и через a= A() обратиться к сеттеру, поменять атрибут класса. Тема не раскрыта
При создание инстанса делается новый объект. Сеттер менять только для созданного инстанса
Ну создал один раз объект другого класса, с ним работаешь
Котик, я же привела пример. Возможно вам никогда не понадобится сделать что-то с Главным классом.
О, другой пример (не очень но). Что если войска (наследуют, проверяют) состояние главнокомандующего, и они будут биться пока главнокомандующий жив ?!
Ну один раз мы получили объект класса главкома, через какой нить DI фреймворк или словарь истантсов. Далее с помощью геттера получаем и чекаем состояние главкома
Ну Котик... (не была права насчёт setattr, думала что вы про instance.DEBUG = '') Но так не делаются метаклассы, сложные системы и архитектуры (но мысл стоящая)
Какие DI фреймворки можете порекомендовать?
Ок, (Я только Singleton использовал разок)
Есть идеи в каких случаях нужен classmethod с гет инстансом ?
Я так форму с фильтром сделал для фласка, чтобы фильтр сохранил значение при переходе на другие страницы фильтрованных данных (но с воркерами всё ломается)
Обсуждают сегодня