在Python中初始化队列

时间:2016-01-21 12:21:34

标签: python queue

我正在尝试编写我的第一个Queue类。到目前为止,我有这个代码可以工作:

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>

请您解释一下两种方法之间的区别以及为什么第二种方法不起作用(虽然我在许多网站上看到过)?

2 个答案:

答案 0 :(得分:1)

您需要在打印之前为repr实施class Queue#floatingCirclesG{ position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin:auto; height:/* put your height */; width:/* put your width */; }

答案 1 :(得分:0)

在重写中,您可能希望返回insert的值,并在调用中将其分配给变量:

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