python中的队列实现会给出大小错误

时间:2016-07-30 00:07:00

标签: python queue

我是Python的新手,因此这个问题。这是我对队列的实现

class Queue:
    def __init__(self):
        self.top = None
        self.marker = None
        self.size = 0

    def push(self, item):
        self.size += 1
        curr = Node(item)
        if self.top is None:
            self.top = curr
            self.marker = curr
        else:
            self.marker.next = curr
            self.marker = curr

    def pop(self):
        if self.top is None:
            raise Exception("Popping an empty queue")
        curr = self.top
        self.size -= 1
        if self.top is self.marker:
            self.top = None
            self.marker = None
        else:
            self.top = self.top.next
        return curr

    def peek(self):
        return self.top.value

    def size(self):
        return self.size

    def isempty(self):
        return self.size == 0

Node类定义如下,

class Node:
    def __init__(self, value=None, next=None):
        self.value = value;
        self.next = next

除了调用size之外,这个实现对大多数方法都适用。 这个电话,

 print(queue.size())

导致以下异常,

print(queue.size())
TypeError: 'int' object is not callable

似乎无法理解这里的问题。

1 个答案:

答案 0 :(得分:0)

您提供的属性和方法名称相同,大小。这会混淆名称解析(对您而言;解释器的规则紧密到位)。检查您的名称解析优先级;我想你会发现在这种情况下该属性优先。因此, queue.size 解析为整数,而不是函数。

相关问题