Munch – вседозволенный объект

Привет. Хочу познакомить вас библиотекой Munch, которая является форком более старой библиотеки Bunch. Рассмотрим суть проблемы, которую она решает. Задать атрибуты объекта, не описывая их по одному в конструкторе. Легче понять на примере: Видно, что object нам не поможет. Но в Python 3 можно сделать пустой класс, это не вызовет ошибки: И в принципе этого…

​​Анимация Jupyter Notebook

Сегодня мы будем анимировать график прямо внутри Jupyter Notebook. Сперва сделаем плавную отрисовку графика. Переключим режим отображения графиков в notebook: Импортируем все, что нужно: Сгенерируем наши данные: Создадим пустой график: Функция animate будет вызываться при отрисовка каждого кадра, аргумент i – номер кадра: Запускаем анимацию: Если мы хотим анимировать сами данные, например, заставить синусоиду «плясать»,…

Абстрактный класс ABC

Абстрактный класс – класс, содержащий один и более абстрактных методов. Абстрактный метод – метод, который объявлен, но не реализован. Абстрактный класс не может быть инстанциирован (создан его экземпляр). Нужно наследовать этот класс и реализовать (переопределить) все абстрактные методы, и только после этого можно создавать экземпляры такого наследника. В Python нет синтаксической поддержки абстрактных классов, но…

Decimal числа. Отличия от float

После рассказа про float меня просили рассказать про Decimal. Узнаем же, что это за зверь, как он устроен внутри и как с ним работать. Итак, Decimal – это класс из стандартного модуля decimal. Он представляет собой число с плавающей точкой, как и float. Да, именно с плавающей, потому что некоторые, я слышал, думают, что это…

Переопределение свойств класса

В заметке расскажу, как переопределить свойства (@property) в классе-наследнике. Как оказалось, это не тривиально и существуют несколько вариантов, различных между собой. Допустим есть базовый класс со свойством: Ситуация А. В классе-наследнике мы хотим переопределить ТОЛЬКО сеттер, чтобы он делал что-то еще помимо того, что умеет в базовом классе. Это не так и тривиально: Ситуация B.…