@VsevolodVlashniy
Дурак.

Почему интерпретатор ведёт себя так с list?

Доброго времени суток! Имеется код:
class MyList:

    def __init__(self, data):
        self.a = data

    def __add__(self, *other):
        for a in other:
           b = []
           b.append(a)
        return self.a + b

b = [1,2,3]
a = MyList([1,2,3])
print(a + b)


В итоге выводится следующее:
[1, 2, 3, [1, 2, 3]]

Это не особо радует меня при виде следующего кода, и что он выводит:
a = [1,2,3]
b = [1,2,3]
c = a + b
print(c)

#Вывод
[1,2,3,1,2,3]


Как это исправить?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Уберите *
Ну и в цикле вы постоянно новый список обнуляете
Ответ написан
Комментировать
@Art005
потому что у вашего же класса реализован другой метод __add__.
Можно просто
self.a.extend(other). Еще * перед other лишний
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dooMoob
Поскольку в __add__ вы ожидаете последовательность аргументов, а суммируете с одним списком, то вот в other и приходит ([1, 2, 3],)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы