#8. Паттерн 'Моносостояние' | Объектно-ориентированное программирование Python

preview_player
Показать описание

Делаем класс, у которого объекты имеют единое локальное пространство, единые локальные атрибуты - паттерн "Моносостояние".

Рекомендации по теме
Комментарии
Автор

Паттерны проектирования: порождающие, структурные, поведенчиские. Пожалуйста, Сергей! Если сделать отдельные видео, где объяснить кратко о каждом, на простом примере кода и добавить их потом в плейлист, то это будет топ в ютюбе! Услыште нас! Мы хотим паттерны.

Парни поставте лайк, чтоб Сергей увидел.

nazarkhort
Автор

Такого наставника хотели бы многие студенты.Спасибо вам огромное

Studio-dgg
Автор

Ура, ура паттерны пошли. Сергей, пожалуйста продолжайте про паттерны. Мы хотим паттерны с примерами!

nazarkhort
Автор

Урок #8 = Пройден

Все четко и по делу понятно, без лишних комментариев :)

Спасибо за урок!

jaksonmillka
Автор

Спасибо большое, у вас самое подробные уроки в отличии от остальных блогеров, да ещё они вздумали своими школами обзавестись, так что от них нечего чего то ждать существенного.

mslq
Автор

Интересная вещь, хотя и пришлось немного поломать мозги, чтобы понять до конца, почему оно работает именно так. Долго не мог понять, как после обозначения нового атрибута "th1.attr_new" он попадает в "__shared_attrs"? Пришлось покопать и потом дошло, что "__dict__" лишь указывает на словарь, который в данном случае является свойством класса, общим для всех экземпляров.

Другими словами, строку
th1.attr_new = "new_attr"
нагляднее можно записать так:
th1.__dict__["attr_new"] = "new_attr" - то есть через "__dict__" мы обращаемся к словарю, на который "__dict__" указывает, и создаём там новую пару ключ-значение, что одновременно является новым атрибутом класса.

hesha-nb
Автор

Спасибо, с нетерпением жду каждого нового урока.

igorb.
Автор

Спасибо огромное! Да, ждем отдельный плейлист про паттерны)

ЕрвандАгаджанян-вк
Автор

Короче, кто не понял магии.
У экземпляра класса есть свои локальные атрибуты. Они хранятся в __dict__. Это словарь, который автоматически создаётся при создании объекта (или инициализации, хз). Но в данном паттерне мы как бы подменяем родной __dict__ экземпляра на __shared_dict самого класса. И, соответственно, когда мы добавляем/удаляем/меняем атрибуты экземпляра класса, мы меняем их, по факту, в __shared_dict.
Если всё равно не понятно, то запустите код ниже. Он делает, по сути, тоже самое.
a = [1, 2, 3]
b = a
c = a
b[1] = 'ай'
c[0] = 'ой'
print(a)
print(b)
print(c)

ПетяПетечкин
Автор

кто не до конца понял почему так получается сделайте 2 словаря А и В. И далее операцию А = В. После этого добавив в любой словарь новый ключ со значением, во втором также окажется эта новая пара. так работают в Питоне ссылки на изменяемые объекты. Так и в нашем примере все объекты имеют общий словарь через ссылку при инициализации и присвоив новый аттрибут вы доавляете его в __dict__и значит __shared_attr, тем самым меняя __dict__ во всех остальных объектах.

vkdcnuq
Автор

Сергей, большое спасибо, очень полезный урок!

СергейУшаков-цч
Автор

Спасибо вам большое за ваш труд. Очень полезные уроки

mellicape
Автор

Спасибо! Очень интересно! Паттерны это интересная тема!

donfedor
Автор

Информация из ролика ещё дополняется крупицами информации из комментариев.

ВикторПелих-яш
Автор

Я думаю может пригодиться если надо что-то сразу бэкапить😌 либо когда требуется создавать клоны, полезный материал

Dayplaylist
Автор

лайк и комментарий в поддержку канала.

ISAWER
Автор

я вроде и понял и не понял суть паттерна.
Ведь мы же можем создать атрибуты класса типо MIN_COORD и MAX _COORD, и через классметод прописать их изменение, тогда для всех объектов класса. также будут общие одинаковые данные, которые будут меняться для всех

Insidepointg
Автор

Присоединяюсь к очереди за паттернами =)

aleksandrsemenov
Автор

эх это бы еще отрабатывать на задачах, а слушать и делать вещи разные, хоть и сижу параллельно с пайчармом. шеф делай на степике курс платный с задачами, купил бы сразу)

SELYAVINNICK
Автор

Спасибо! Расскажите про вложенные(внутренние) классы пожалуйста.

ivanstereotekkofficial