Какие знаешь паттерны проектирования встроенные в Python
Python
Senior
Без компании
Какие знаешь паттерны проектирования встроенные в Python
Ответы
В Python есть несколько встроенных паттернов проектирования, которые активно используются в стандартной библиотеке и самом языке:
**Итератор** - встроен в язык через протокол `__iter__`/`__next__`:
```
for item in [1, 2, 3]: # использует итератор
print(item)
```
**Декоратор** - функция, изменяющая поведение другой функции:
```
def logger(func):
def wrapper(*args):
print(f"Calling {func.__name__}")
return func(*args)
return wrapper
@logger
def greet(name):
return f"Hello {name}"
```
**Синглтон** - реализуется через модули (каждый модуль загружается один раз):
```
# module.py
class Singleton:
pass
instance = Singleton() # будет создан только один раз
```
**Фабричный метод** - например, `datetime.now()` создает объекты даты.
**Адаптер** - например, `io.StringIO` адаптирует строку под файловый интерфейс.
**Наблюдатель** - реализован в `weakref` для слабых ссылок и событий.
**Стратегия** - например, `sorted()` принимает ключевую функцию для изменения поведения сортировки.