Property в классе наследнике

Кажется очевидным, что property можно переопределить в классе наследнике и вызвать super внутри этого переопределенного свойства. Вроде бы звучит нормально? Да, так и есть. Тем не менее, когда мой коллега задал мне такой вопрос, я "завис" на некоторое время. Возможно я излишне подозрителен, но каждый раз когда в коде есть какая-то магия, я ожидаю подвоха. Поэтому, я решил немного поэкспериментировать и доказать себе, что проперти работают так как ожидается.

more ...

Pyenv на маке

Довольно сложно управляться с несколькими версиями питона на одном ноутбуке. Хотя, это довольно распространенная ситуация. Обычно, у разработчиков несколько проектов требующих разных версия питона. В целом, есть несколько вариантов для решения этой задачи, но моим любимым остается pyenv в компании с плагином virtualenv. Раньше я использовал "голый" Homebrew, но это далеко не так гибко и удобно.

more ...

Enums в Python

Enums наименее используемая фича Питона. Как программисты мы предпочитаем использовать странные дикты или списки там, где мы могли бы использовать enum. По большей части это происходит из-за того, что это довольно новая фича и требуется использовать внешнюю библиотеку обратной совместимости, если используется питон версии 2.7. Тем не менее, довольно много случаев, когда использовать enum гораздо удобнее.

more ...

Делаем Java-подобный Optional в Python

В некоторых случаях использование None может превратить код в нечитаемую и неподдерживаемую кашу. К примеру, если есть необходимость отличить "пустое" значение от отсутствия значения для целочисленного ввода, когда 0 не может использоваться в качестве этого "пустого" значения, обойтись только используя None очень сложно. Одно из возможных значений использовать что-то подобное Optional из Java.

more ...

Бэктрекин без рекурсии на Python

В Питоне нет оптимизации хвостовой рекурсии и достаточно жесткий лимит на рекурсивные вызовы. Это может вызвать затруднения при решении задач с помощью алгоритма бэктрекинга: лимита хватает на поиск решения судоку, но он может оказаться слишком низким, если количество решений для проверки в задаче довольно высоко.

more ...

c