Те, кто в 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
Il centro destra trova un accordo per le regionali: Edmondo #Cirielli sarà candidato in Campania, Alberto #Stefani in Veneto e Luigi #Lobuono in Puglia.
La coalizione ha inoltre deciso che il primo partito (al momento #FdI) potrà rivendicare la candidatura in Lombardia nel 2028
@UltimoraPolitics
#Puglia – Antonio #Decaro (#PD) è il nuovo presidente della regione, succede a Michele #Emiliano (PD), in carica dal 2015. Sconfitto il candidato di cdx Luigi #Lobuono.
@UltimoraPolitics
#Italia🇮🇹
#Regionali
#Puglia
Proiezione di Opinio Italia.
Emittente: RaiNews24.
Campione: 5%.
🟧 Antonio #Decaro (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #PiùEu|RE, #IV|RE, #Az|RE, #PSI|S&D, #DemoS|S&D, #PRC|LEFT, liste minori e civici): 69,2%
🟦 Luigi #Lobuono (#FdI|ECR, #FI|PPE, #LSP|PfE, #UdC|PPE, #NPSI|Centro-destra, #ScN|Meridionalisti, #PdF|Destra cristiana, #DC|Centro, liste minori e civici): 28,8%
@TuttoElezioni