+ 3
Объясните на русском о магических методах
После метода __инит__ перестал все понимать и запутался зачем эти операции со знаками, что этим упрощается? Объясните понятным, а главное русским языком
2 Answers
+ 12
Это специальные методы которые "управляют" ведением данного класса. Например, метод __add__ отвечает за операцию добавления. Можешь определить что сделать когда поставишь знак плюс между двумя переменными одного класса. Итак __add__ для стрингов соединяет текст, а для интегеров действует по-другому -- проводит математическую операцию.
И это точно потому что две отдельные дефиниции метода __add__:
5 + 6 != "5" + "6" ;)
0
я тоже затормозил на магических методах. Для чего они-понятно, а вот почему такой вид не понятно. Мне кажется это связано с передачей адресов с данными в программах. Единственное, что меня не много успокоило- поставил везде оператор print и посмотрел как передаются данные:
class Vector2D:
def __init__(s, x, y):
s.x = x
s.y = y
print('print1 ', s.x, s.y)
def __add__(ss, ot):
V= Vector2D(ss.x + ot.x, ss.y + ot.y)
print('print2 ',ss.x, ss.y, ss)
print('print3 ' ,ot.x, ot.y, ot)
print('print4 ',V)
return V
first = Vector2D(5, 7)
second = Vector2D(3, 9)
result = first + second
print(result.x)
print(result.y)