Я пытаюсь закодировать свой первый класс очереди. До сих пор у меня есть этот код, который seemes работать:Инициализация очереди в Python
class Queue(list):
def __init__(self):
self = []
def insert(self, x):
self.append(x)
return self
def delete(self):
if len(self) == 0:
print "The queue is empty"
else:
self.remove(self[0])
return self
Однако, я был порекомендован переписать его, и когда я пытаюсь что-то вроде этого я получил неправильные результаты:
class Queue:
def __init__(self):
self.items = []
def insert(self, x):
self.items.append(x)
Тест:
queue = Queue()
print queue
queue.insert(5)
print queue
Got:
<__main__.Queue instance at 0x0000000002A2F148>
<__main__.Queue instance at 0x0000000002A2F148>
Не могли бы вы объяснить мне разницу между двумя подходами и почему вторая не работает (хотя я видел ее на многих сайтах)?
Второй один работает, только override' __str__' или выполните 'print queue.items' – Andrey
, как бы вы запускали свой первый метод и каков ожидаемый результат вашего второго метода. – The6thSense
Ожидаемые выводы для тестов (см.« Тест »выше) равны соответственно [], [5]. Я получил его, используя первую версию кода и следуя рекомендациям __str__ (Спасибо!) Со второй версией кода. – Irina