TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.93K subscribers
Post #4289 743
Марк Лутц «Изучаем 𝙿𝚢𝚝𝚑𝚘𝚗», глава 39:

«Из−за того, что декораторы классов способны перехватывать вызовы, создающие экземпляры, они могут использоваться либо для управления созданием экземпляров классов, либо для реализации паттерна проектирования «одиночка». В последнем случае декоратор обеспечивает, чтобы экземпляр класса существовал в единственном числе, и при последующих вызовах возвращался именно он.»

Декоратор 𝚂𝚒𝚗𝚐𝚕𝚎𝚝𝚘𝚗 работает следующим образом:

− В словаре 𝚒𝚗𝚜𝚝𝚊𝚗𝚌𝚎𝚜 хранятся созданные экземпляры для каждого класса;
− При первом вызове 𝙿𝚎𝚛𝚜𝚘𝚗('𝙱𝚘𝚋') создается экземпляр и сохраняется в словаре;
− При втором вызове 𝙿𝚎𝚛𝚜𝚘𝚗('𝚂𝚞𝚎') декоратор проверяет, что экземпляр уже существует, и возвращает тот же объект;
− Поэтому и 𝚋𝚘𝚋, и 𝚜𝚞𝚎 ссылаются на один и тот же объект с именем '𝙱𝚘𝚋'.

Таким образом, при выводе 𝚋𝚘𝚋.𝚗𝚊𝚖𝚎 и 𝚜𝚞𝚎.𝚗𝚊𝚖𝚎 мы получаем '𝙱𝚘𝚋' дважды, поскольку это один и тот же объект.
  • 👍 2
  • 👎 1
More from @quiz_python
  1. Sep 25, 2026Развёрнутое пояснение: 1. defaultdict(int) создаёт словарь, в котором фабрика int возвраща…
  2. Sep 25, 2026Post #4896
  3. Sep 25, 2026Развёрнутое пояснение: 1. Создаётся контекстная переменная request_id без значения по умол…
  4. Sep 25, 2026Post #4894
  5. Sep 24, 2026Развёрнутое пояснение: 1. Для класса Client строится порядок разрешения методов: Client, A…
  6. Sep 24, 2026Post #4892
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →