TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #99 · 12 јун.

Расширенный вариант каунтера из прошлого примера. Оказалось ему есть куда еще развиваться и без унарных операторов))). Добавим обработку бинарных операторов "+" и "-". Сделаем возможность прибавлять к канутеру любое число обычным синтаксисом def __add__(self, other): self.val += int(other) def __sub__(self, other): self.val += int(other) Теперь можно делать так: >>> c = Counter(3) >>> c + 2 >>> print(c) Count: 5 Добавим обработку для случая когда наш каунтер справа def __radd__(self, other): self.__add__(other) def __rsub__(self, other): self.__sub__(other) >>> c = Counter(3) >>> 2 + с >>> print(c) Count: 5 Добавим во все методы возвращаемое значение и будем возвращать self: def __pos__(self, *args): self.val += 1 return self def __neg__(self): self.val -= 1 return self ... Тоже самое в остальных. Теперь такой синтаксис тоже допустим (и тоже антипаттерн!): >>> c = Counter() >>> print(c) Count: 0 >>> ++c Count: 2 >>> ++++c Count: 6 >>> ---c Count: 3 А так же теперь доступен такой вариант >>> c += 2 Count: 5 Следующие три записи идентичны по результату с += 2 с + 2 ++c Во всех случаях каунтер с увеличится на 2 Еще раз о главном! Все эти операции изменяют один из операндов, что не принято в Python. Так что дальше эксперементов не стоит уходить. Класс требует доработки чтобы не конфликтовать с принятыми нормами. 🌎Ссылка на полный листинг __________________________ PS. Если инкремент изменить на 0.5, то у нас получится синтаксис весьма похожий на C. То есть, чтобы прибавить 1 надо будет написать ++x 😎, но это совсем уже будет вне всяких приличий 🥴 #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Глобално пребарување

sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags