TypeError: неподдерживаемые типы операндов для +: «строка» и «строка»

вот код:

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 21.03.2022 18:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы определили, что является строковым представлением объекта, но вы просто добавили объекты, а не их строковое представление. Как сказал @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 >

Другие вопросы по теме