您不会以这种方式“堆叠”。
在您的示例中,您将list 实例用作堆栈,只需限制允许的方法数量即可。这有点像给你的眼睛蒙上眼罩,假装你是瞎子。
例如,不应使用stack[i] 和stack.insert(i, x)。但是type(stack) 仍然返回<class 'list'>:
>>> stack = ["1", "2", "3"]
>>> stack.append("4")
>>> stack.append("6")
>>> stack.pop()
'6'
>>> stack
['1', '2', '3', '4']
>>> type(stack)
<class 'list'>
所以这种方式并不可靠,因为没有什么可以阻止您在堆栈上调用 list 实例方法:
>>> stack.insert(0,'0')
>>> stack
['0', '1', '2', '3', '4']
如果您想限制stack 对象可用的方法数量,您可以在list 周围编写一个Stack 包装器:
class Stack:
def __init__(self, items=[]):
self.items = items
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def size(self):
return len(self.items)
def __str__(self):
return str(self.items)
stack = Stack(["1", "2", "3"])
stack.push("4")
stack.push("6")
stack.pop()
print(stack)
# ['1', '2', '3', '4']
stack.insert(0, '0')
# AttributeError: Stack instance has no attribute 'insert'