2016-01-21 30 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