Я пытаюсь пометить два списка, которые я создал с помощью класса, в новый список. Я использую функцию __add__
. Но он постоянно добавляет первые два индекса и останавливается.
Это мой код:
class Stack:
def __init__(self):
self.__items = []
self.__top = 0
def is_Empty(self):
return self.__top <= 0
try:
raise Exception('Stack empty.')
except Exception as error:
print(error)
def __str__(self):
"""Print current stack"""
if self.is_Empty() == True:
return "Stack empty"
else:
return "Stack is not empty"
def push(self, item):
"""Push item in stack."""
self.__items.append(item)
self.__top += 1
def pop(self):
"""Remove top of the stack."""
if self.__top <= 0:
return self.is_Empty()
self.__top -= 1
return self.__items.pop()
def top(self):
"""Return top of the stack."""
if self.__top <= 0:
return self.is_Empty()
else:
return self.__items[-1]
def my_stack(self):
"""Show the current stack"""
if self.__items == []:
return self.is_Empty()
else:
return f"The current stack is {self.__items}"
def __add__(self,other):
"""Add two lists together"""
newlst = []
for i, j in zip(self.__items, other.__items):
newlst.append(i+j)
return newlst
def __eq__(self, other):
"""Return True if two list is equal else Return False """
return (self is other) or (self.__items) == (other.__items)
например:
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack2 = Stack()
stack2.push(4)
stack2.push(5)
stack2.push(6)
Теперь я пытаюсь добавить два стека в stack3
:
stack3 = stack + stack2
Результат, который я получаю, таков:
>>> print(stack3)
[5]
Моя цель - получить stack3
вот так:
>>> print(stack3)
[1, 2, 3, 4, 5, 6]