在Python中实现队列-两个isempty()方法给出不同的答案

在Python中实现队列-两个isempty()方法给出不同的答案,python,python-3.x,oop,queue,Python,Python 3.x,Oop,Queue,我正在做一些基本的Python编程练习,并尝试实现一个队列(使用列表)。不幸的是,我得到的isempty()函数的行为我不理解。当运行下面的代码时,最后两行给出了不同的答案:A产生False,而B产生True。为什么A也不产生错误 class Queue: def __init__(self): self.items = [] def push(self,item): self.items.insert(0,item) def pop(self): re

我正在做一些基本的Python编程练习,并尝试实现一个队列(使用列表)。不幸的是,我得到的isempty()函数的行为我不理解。当运行下面的代码时,最后两行给出了不同的答案:A产生False,而B产生True。为什么A也不产生错误

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?

只需将您的
isempty()
方法更改为:

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

只需将您的
isempty()
方法更改为:

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

Queue.isempty()
的实现正在检查方法
size
是否等于整数
0
,该值永远不会为真

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()                  
print(q.size)
产生:


最简单的解决方案是使用Christopher Shroba的建议修改
队列。isempty()
实现以使用列表的大小方法。

您的
队列的实现。isempty()
正在检查方法
大小
是否等于整数
0
,这永远不会是真的

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()                  
print(q.size)
产生:


最简单的解决方案是使用Christopher Shroba的建议修改
队列.isempty()
实现以使用列表的大小方法。

self.size
是一种方法
self.size()。考虑使用“代码>入队< < /代码>和>代码>去队列< /代码>。<代码> Survivs/Cuth>是一种方法。code>self.size()。考虑使用“代码>入队< <代码> > >代码>去队列< /代码>。我很高兴!如果这里的答案解决了你的问题,如果你不介意,请将其标记为已接受:)我的荣幸!如果此处的答案解决了您的问题,如果您不介意,请将其标记为已接受:)