Те, кто в Python не первый день, хорошо знают, что на число можно умножить не только число, но и другие типы. Главное, чтобы у этих типов была реализация такой операции.
# list
>>> [1] * 3
[1, 1, 1]
# tuple
>>> (2, 3) * 3
(2, 3, 2, 3, 2, 3)
# string
>>> "A" * 3
"AAA"
Так работает полиморфизм стандартных типов. Интересно здесь то, что это сработает и в том случае, когда порядок операндов обратный. То есть int умножить на [тип].
# list
>>> 3 * [1]
[1, 1, 1]
# tuple
>>> 3 * (2, 3)
(2, 3, 2, 3, 2, 3)
# string
>>> 3 * "A"
"AAA"
Если хотите реализовать такое поведение в ваших классах то следует помнить два момента:
1. Если множитель справа, то вам нужно реализовать метод __mul__, наш класс это первый операнд, то есть слева.
myType * 3
2. Если множитель слева, то вам нужно реализовать метод __rmul__, наш класс это второй операнд, справа.
3* myType
Всё тоже самое можно делать и для других математических операторов. И если в этом примере действие и результат будут фактически одинаковыми, то бывают ситуации, когда это не так.
Например, при умножении матриц имеет значение порядок операндов.
Для других операторов, таких как деление или сдвиг, очень важно кто с какой стороны находится.
>>> 2/4, 4/2
(0.5, 2.0)
>>> 2<<3, 3<<2
(16, 12)
>>> 100%15, 15%100
(10, 15)
#tricks#basic
#Alternativa
#PDCM
Indicii prețurilor de consum în Republica Moldova în luna ianuarie 2025
Biroul Național de Statistică informează că, prețurile medii de consum în ianuarie 2025 s-au majorat față de luna decembrie 2024 cu circa 2,8%, luna ianuarie 2024 (în ultimele 12 luni) cu 9,1%.
------
Индексы потребительских цен в Республике Молдова в январе 2025 года
Национальное бюро статистики сообщает, что средние потребительские цены в январе 2025 года выросли по сравнению с декабрем 2024
Первая пятерка кандидатов в Тараклийский районнный совет. В бюллетенях PDCM - на ШЕСТОЙ позиции.
Мы - это вы, а Вы - это мы!
#ВместеЗаТараклию#pdcm#пром