вот код:
class line:
def __init__(self, name):
self.name = name
def __str__(self):
return f"< {self.name} >"
print(line('te') + line('st'))
это ошибка, которую я получаю:
Traceback (most recent call last):
File "C:\Users\ronil\Documents\Calculator\main.py", line 9, in <module>
print(line('roni') + line('levin'))
TypeError: unsupported operand type(s) for +: 'line' and 'line'
вывод кода должен быть "< test st >" строка класса дает новый тип переменной и «print (line ('te') + line ('st'))» необходимо соединить "te" и "st" с новой строкой типа
Вы определили, что является строковым представлением объекта, но вы просто добавили объекты, а не их строковое представление. Как сказал @MisterMiyagi, вы получаете сообщение об ошибке, потому что Python ищет метод __add__()
в объектах и не находит его. Поскольку я не думаю, что добавление реальных объектов является вашей целью, просто используйте str()
, чтобы получить строки, которые затем можно объединить:
print(str(line('te')) + str(line('st')))
# < te >< st >
Или используйте нотацию f-строки, которая автоматически вызывает строковый метод для объектов:
print(f"{line('te')}{line('st')}")
# < te >< st >
Если вы действительно хотите добавить объекты, определите метод __add__()
:
def __add__(self, other):
return line(self.name + other.name)
print(line('te') + line('st'))
# < test >
Вы так и не определили, что должно означать
+
между двумя строками.