从book';python中的数据结构和算法';古德里奇先生

从book';python中的数据结构和算法';古德里奇先生,python,queue,Python,Queue,我正在学习M.Goodrich的《python中的数据结构和算法》一书,并正在研究队列类中的出列实现,请参见以下内容: 类队列: 默认容量=10 定义初始化(自): self.\u data=[None]*Queue.DEFAULT\u容量 self._size=0#队列当前大小 自前=0 定义(自我): 返回自我。\u大小 def为空(自身): 返回self.\u size==0 def排队(自我,dt): 如果self.\u size==len(self.\u数据): 自调整大小(2*len

我正在学习M.Goodrich的《python中的数据结构和算法》一书,并正在研究队列类中的出列实现,请参见以下内容:

类队列:
默认容量=10
定义初始化(自):
self.\u data=[None]*Queue.DEFAULT\u容量
self._size=0#队列当前大小
自前=0
定义(自我):
返回自我。\u大小
def为空(自身):
返回self.\u size==0
def排队(自我,dt):
如果self.\u size==len(self.\u数据):
自调整大小(2*len(自调整数据))
空=(自身前+自身大小)%len(自身数据)
自身数据[空]=dt
自身尺寸+=1
def优先(自我):
如果self.is_为空():
空出
返回self.\u数据[self.\u front]
def出列(自):
如果self.is_为空():
提升队列为空(“队列为空”)
回答=自我数据[自我前方]
自身数据[自身前端]=无
self.\u front=(self.\u front+1)%len(self.\u数据)
自身尺寸-=1
回程网
定义大小(自身大小、所需大小):
旧=自身数据
步行=自我
self.\u data=[None]*所需的\u大小
对于范围内的i(自身尺寸):
self._data[i]=旧的[walk]
步行=(1+步行)%len(旧)
自前=0
类QueueisEmpty(BaseException):
通过
如果您查看dequeue方法,您将看到它检查队列是否为空,然后通过

回答=自我数据[自我前方]

我很好奇为什么作者没有使用内置的self.first()方法。 我认为这样做有两个好处:

  • 它将有一个较短的代码
  • 它将处理空队列案例

  • 我是说,这听起来像是作者的问题。但对我来说,它看起来不像是封装的代码。是的,但作为一个程序员,我想听听你的意见,为什么这样做。。。还有,你说没有封装代码是什么意思?没有什么好的理由,它看起来像是坏代码。同样,这个问题并不适用于堆栈溢出。在任何情况下,出于您的原因,使用较短的代码从来都不是一个很好的理由,至于第2点,作者代码已经做到了这一点,但是,现在它在两个不同的地方做到了。。关键是,您应该封装打算重用的代码,比如说,该方法,然后在需要该功能时重用该方法。你应该这样做。我说不出作者为什么不这么做。你应该问问作者。很可能,这只是一个疏忽。