😻 Чек-лист удовольствия
- [x] приятная музыка
- [x] кофе был сразу до, или во время сессии
- [x] было не жарко
- [ ] было не холодно
- [x] на столе стоял стакан с водой
- [x] спина и шея не болела
- [ ] в комнате был приятный запах
📚 Что ты сегодня учил?
- паттерн Репозиторий (Хранилище Данных)
- надо отделять орм от модели так чтобы поменять орм не составляло труда. Модель должна быть максимально dependency-free
- репозиторий связывать с базой данных, а из репозитория уже брать данные. Это слой абстракции. Зачем нам слои абстракции обсуждается в третьей главе, которую я только начал
- на модель нужно писать юнит тесты
- свои типы можно создавать используя
typing
NewType
- дженерики на питоне имеют такой вид
List[T]
, Set[T]
они тоже лежат в typing
- паттерн Object Value. Есть объекты, которые сравниваются по идентификации (например, по айди), а есть объекты, которые идентифицируются по всем значениям в них (имя, фамилия, например). Последние следует делать иммутабельными, для этого хорошо подходят
namedtuples
(они лежат в collections
).
- для сравнения обычных объектов обычно выбирают какой-то один параметр и сравнивают по нему. Для этого есть магический метод eq.
- чтобы объект можно было использовать во множестве или как ключ для словаря, нужно имплементировать магический метод hash