Это специальные методы (не "dunder" (двойное подчеркивание) делает их особенными, но чаще всего они имеют особое значение).Они часто вызываются при использовании операторов.Вы можете переписать поведение в ваших классах.
Например, если у вас есть класс C
, определив
class C:
def __add__(self, other):
#....
return something
, вы можете определить, что должно произойти, если вы добавите два экземпляра из класса:
val = instance1 + instance2