Те, кто в 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
#Italia#ConventionFdI
Francesco #Acquaroli (#FdI|ECR): "La crisi demografica dell'Appennino va fermata. E non possiamo fermarla se leviamo i servizi, le scuole, i servizi sanitari. I territori devono essere strategicamente centrali e non devono essere trattate come periferie."
@UltimoraPolitics
#Italia#ConventionFdI
Francesco #Acquaroli (#FdI|ECR): "Ce la stiamo mettendo tutta, non solo nell'economia, ma mettendo al centro anche le infrastrutture. La linea adriatica diventerà la linea merci."
@UltimoraPolitics
#Italia#ConventionFdI
Francesco #Acquaroli (#FdI|ECR): "La regione Marche era disorientata, divisa. Abbiamo provato a liberare le energie migliori della Marche, mettendo tutti insieme."
@UltimoraPolitics
#Italia🇮🇹
#Regionali
#Marche
❗️Francesco #Acquaroli (#FdI|ECR; supportato anche da #LSP|Pfe, #FI|PPE, #UDC|PPE, #NM|PPE, #ScN|Meridionalisti, dissidenti di #IV|RE e civici) è stato rieletto Presidente della Giunta regionale delle Marche.
@TuttoElezioni