175 читали · 3 года назад
Python. Инкремент с помощью __pos__
В Python нет операции инкремента ++ как в си-подобных языках, поэтому используется x += 1. Однако запись ++x является валидным кодом (но не x++), так как это просто два унарных оператора сложения. При применении унарного плюса у объекта вызывается магический метод __pos__, то есть запись ++x можно понять как x.__pos__().__pos__(). Зная это, можно реализовать класс, который будет представлять число и поддерживать поведение инкремента...
1 год назад
Python. Инкремент с помощью __pos__
В Python нет операции инкремента ++ как в си-подобных языках, поэтому используется x += 1. Однако запись ++x является валидным кодом (но не x++), так как это просто два унарных оператора сложения. При применении унарного плюса у объекта вызывается магический метод __pos__, сделаем небольшое отступление и разберем, что такое магический метод в сжатом варианте, что бы лучше понимать происходящие. Подробнее сделаю пост про магические методы в будущем. Магические методы, или dunder-методы предназначены для перегрузки Python-операторов или встроенных методов. А нужны они, чтобы реализовывать свойства...