【发布时间】:2023-04-02 22:50:02
【问题描述】:
我有一个完整的 Deque Array 类,如下所示:
from collections import deque
import ctypes
class dequeArray:
DEFAULT_CAPACITY = 10 #moderate capacity for all new queues
def __init__(self):
self.capacity = 5
capacity = self.capacity
self._data = self._make_array(self.capacity)
self._size = 0
self._front = 0
def __len__(self):
return self._size
def __getitem__(self, k): #Return element at index k
if not 0 <= k < self._size:
raise IndexError('invalid index')
return self._data[k]
def isEmpty(self):
if self._data == 0:
return False
else:
return True
def append(self, item): #add an element to the back of the queue
if self._size == self.capacity:
self._data.pop(0)
else:
avail = (self._front + self._size) % len(self._data)
self._data[avail] = item
self._size += 1
#def _resize(self, c):
#B = self._make_array(c)
#for k in range(self._size):
#B[k] = self._A[k]
#self._data = B
#self.capacity = capacity
def _make_array(self, c):
capacity = self.capacity
return (capacity * ctypes.py_object)()
def removeFirst(self):
if self._size == self.capacity:
self._data.pop(0)
else:
answer = self._data[self._front]
self._data[self._front] = None
self._front = (self._front + 1) % len(self._data)
self._size -= 1
print(answer)
def removeLast(self):
return self._data.popleft()
def __str__(self):
return str(self._data)
当我尝试在 main 中打印 deque 时,它会打印出类似这样的内容,
<bound method dequeArray.__str__ of <__main__.dequeArray object at 0x1053aec88>>
什么时候应该打印整个数组。我想我需要使用 str 功能,我尝试添加
def __str__(self):
return str(self._data)
这并没有给我输出。我也试过了
def __str__(self):
return str(d)
d 是双端队列数组,但我仍然没有成功。我怎样才能让它正确打印?
【问题讨论】:
-
您可能正在尝试
print thing.__str__而不是thing.__str__()(或只是str(thing))。 -
请阅读this并提供
class的定义 -
@Pynchia 我添加了课程的其余部分,我认为它没有任何用处,因为我只是想弄清楚如何正确打印双端队列
-
不完整,你只添加了方法。您的电话
Deque Array class为多种可能性敞开大门。请显示它继承自什么 -
ctypes.py_object正在用锤子杀死一只苍蝇。只需使用对象列表。但真正的问题是为什么你不能使用collections.deque。
标签: python arrays queue tostring deque