Для пользовательских классов предусмотрены специальные методы, позволяющие объектам данных классов участвовать в таких привычных операциях как сложение, вычитание, умножение, деление (+ - * /), а также во многих других. Другими словами, смысл (то, что он делает) знака + (или любого другого оператора) зависит от того, к каким объектам он применяется. Это называется перегрузкой операторов. В классах перегруженные операторы описываются с помощью специальных зарезервированных методов, которые в начале и в конце имеют по два знака подчеркивания. class Newclass: def __init__(self, base): self.base = base def __add__(self, a): self.base = self.base + a def __str__(self): return "%s !!! " % self.base a = Newclass(10) a + 20 print (a) b = Newclass("yes") b + "terday" print (b) c = Newclass([2,6,3]) c + [7, 1] print (c) |