这段代码是从Michael t. Goodrich的《DATA STRUCTURE AND ALGORITHMS IN PYTHON》一书中借来的。
class ArrayStack:
def __init__(self):
self.data=[]
def __len__(self):
return len(self.data)
def is_empty(self):
return len(self.data)==0
def push(self,e):
self.data.append(e)
def top(self):
if self.is_empty():
raise Empty('Stack is empty')
else:
return self.data[-1]
def pop(self):
if self.is_empty():
raise Empty('Stack is empty')
else:
return self.data.pop()
在这里,作者使用raise Empty("stack is empty')
引发错误消息,但"Empty"关键字不适合与 raise 一起使用,而是在我运行程序时抛出NameError
。我不明白为什么作者在这里使用它而不是使用Exception
关键字进行 raise。
它已被用于本书的每个数据结构中,所以我不认为这是一个打字错误。(如果我错过了一些基本的东西,我深表歉意)
本书在本书第6章的"片段6.1"中定义了Empty
类。 此片段的描述是:
代码片段 6.1:空异常类的定义。
片段本身是:
class Empty(Exception):
"""Error attempting to access an element from an empty container."""
pass
本书后面使用此类的部分引用了此代码片段。