以下定義了一個全功能的堆棧類:class error(Exception): pass # when imported: local exception
class Stack:
def __init__(self, start=[]): # self is the instance object
self.stack = [] # start is any sequence: stack...
for x in start:
self.push(x)
def push(self, obj): # methods: like module + self
self.stack.append(obj) # top is end of list
def pop(self):
if not self.stack:
raise error('underflow')
return self.stack.pop() # like fetch and delete stack[-1]
def top(self):
if not self.stack:
raise error('underflow')
return self.stack[-1]
def empty(self):
return not self.stack # instance.empty()
def __len__(self):
return len(self.stack) # len(instance), not instance
def __getitem__(self, offset):
return self.stack[offset] # instance[offset], in, for
def __repr__(self):
return '[Stack:%s]' % self.stack
這裡模拟了一個棧頂在清單末尾的堆棧。
進棧時,利用清單的append方法将資料添加至末尾;出棧時,則利用pop方法将末尾的元素删除并傳回;
類中的top方法還可以僅傳回棧頂元素而不做出棧操作;而empty方法可以檢測目前棧是否為空;
另外,該類還實作了檢測棧内元素個數、擷取任意位置的元素等。
該執行個體來自于《Programming Python》4th Edition