+ 3

Объясните на русском о магических методах

После метода __инит__ перестал все понимать и запутался зачем эти операции со знаками, что этим упрощается? Объясните понятным, а главное русским языком

10th Feb 2018, 11:30 AM
Nikolay
Nikolay - avatar
2 odpowiedzi
+ 12
Это специальные методы которые "управляют" ведением данного класса. Например, метод __add__ отвечает за операцию добавления. Можешь определить что сделать когда поставишь знак плюс между двумя переменными одного класса. Итак __add__ для стрингов соединяет текст, а для интегеров действует по-другому -- проводит математическую операцию. И это точно потому что две отдельные дефиниции метода __add__: 5 + 6 != "5" + "6" ;)
10th Feb 2018, 12:55 PM
Kuba Siekierzyński
Kuba Siekierzyński - avatar
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)
12th Feb 2018, 3:17 PM
vadim
vadim - avatar