Те, кто в 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
Date A Live Fragment: Parte 2 Nightmare or Queen
Año 2020
Duración 24 min.
País Japón
🎬Dirección#JunNakagawa
📖Guion Yuichiro Higashide
📕Novela#YuichiroHigashide
Productora Geek Toys
Género#Animación#Comedia#Romance#Cienciaficción#Cortometraje#Spinoff#Secuela
Trailer / Sinopsis
Ver Aquí
Parte 1 Date a Bullet
Balto II: Wolf Quest
aka Balto 2: Aventura en la Tierra del Hielo
📅Año 2002
⏱Duración 76min.
🎥Dirección#PhilWeinstein
📄Guion Dev Ross
👤Personajes Cliff Ruby, Eliana Lesser
🎼Música Adam Berry
🎬Productora Universal Cartoon Studios
Género#Animación#Aventuras#Secuela#Perros#Lobos#Siberiano
Reparto | Trailer | Sinopsis
Ver Aquí
SagaBalto