我是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
似乎无法理解这里的问题。
答案 0 :(得分:0)
您提供的属性和方法名称相同,大小。这会混淆名称解析(对您而言;解释器的规则紧密到位)。检查您的名称解析优先级;我想你会发现在这种情况下该属性优先。因此, queue.size 解析为整数,而不是函数。