2016-01-21 65 views
3

我想編碼我的第一個隊列類。到目前爲止,我有這個代碼,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 

不過,我recomended重寫它,當我嘗試這樣的事情我得到錯誤的結果:

class Queue: 
    def __init__(self): 
     self.items = [] 

    def insert(self, x): 
     self.items.append(x) 

測試:

queue = Queue() 
print queue 
queue.insert(5) 
print queue 

了:

<__main__.Queue instance at 0x0000000002A2F148> 
<__main__.Queue instance at 0x0000000002A2F148> 

請問你能否解釋兩種方法之間的區別,以及爲什麼第二種方法不起作用(儘管我在很多網站上看到過)?

+1

第二個作品,只是override' __str__'或者執行'print queue.items' – Andrey

+0

你將如何運行你的第一個方法,第二個方法的期望輸出是什麼 – The6thSense

+0

測試的預期輸出(見上面的「測試」)分別是[],[5]。我使用第一個代碼版本並使用第二個代碼版本跟隨__str__ advise(謝謝!)。 – Irina

回答

0

改寫內部之前實施的class Queue要麼strrepr,你可能想返回插入的值,並在調用,它分配給一個變量:

queue = Queue() 
print queue #should show something like <__main__.Queue instance at 0x(some numbers here)> 
newQueue = queue.insert(5) 
print newQueue 

,並在函數內部,將其更改爲類似:

def insert(self, x): 
    self.items.append(x) 
    return self.items