【发布时间】:2017-01-27 17:08:35
【问题描述】:
我正在做一些基本的 Python 编程练习并尝试实现一个队列(使用列表)。不幸的是,我的 isempty() 函数出现了我不理解的行为。运行下面的代码时,最后两行给出不同的答案:A 产生 False,而 B 产生 True。为什么 A 也不会产生 False?
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
q.push("a")
q.push("b")
print(q.pop())
print(q.isempty())
print(q.pop())
print(q.isempty()) # shouldn't this (A)...
print(q.size()==0) # ...and this (B) yield the same answer?
【问题讨论】:
-
self.size是一种方法。self.size()返回大小,但self.size是方法本身,而不是数字。 -
虽然您的类的行为确实像一个队列,但
push和pop是通常与堆栈相关的术语(它们是 LIFO 数据结构)。考虑改用术语enqueue和dequeue。
标签: python python-3.x oop queue