Class 方法没有 return 值
Class method doesn't return value
我正在学习 MTIx 6.00.1x 计算机科学入门 class,但在创建 class 方法时遇到问题。具体来说,我的 'Queue' class 中的 'remove' 函数没有 return 我期望的值。
请求的上下文如下:
For this exercise, you will be coding your very first class, a Queue class. In your Queue class, you will need three methods:
init: initialize your Queue (think: how will you store the queue's elements? You'll need to initialize an appropriate object attribute in this method)
insert: inserts one element in your Queue
remove: removes (or 'pops') one element from your Queue and returns it. If the queue is empty, raises a ValueError.
我用 'remove' 方法编写了以下代码,但是尽管该方法的行为正确地改变了数组,但它没有 return 'popped' 值:
class Queue(object):
def __init__(self):
self.vals = []
def insert(self, value):
self.vals.append(value)
def remove(self):
try:
self.vals.pop(0)
except:
raise ValueError()
如有任何帮助,我们将不胜感激!
嗯,在 Python 返回很容易,所以就这样做:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError()
幸运的是,pop()
已经同时删除和 returns 所选元素。
您需要使用 return
返回值。将您的删除方法更新为:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError
您必须明确 return 该值:
return self.vals.pop()
另请注意:
list.pop()
方法的参数是可选的;
- 它还会引发一个
IndexError
,所以你应该只捕获那个特定的异常而不是每个异常;
- 如果可能,你应该使用exception chaining;
- 您的
vals
会员有点私密,所以 rename it to start with an underscore;
- 整个任务有点毫无意义,因为 Python 列表已经有
append()
和 pop()
具有完全需要的行为的方法。
我正在学习 MTIx 6.00.1x 计算机科学入门 class,但在创建 class 方法时遇到问题。具体来说,我的 'Queue' class 中的 'remove' 函数没有 return 我期望的值。
请求的上下文如下:
For this exercise, you will be coding your very first class, a Queue class. In your Queue class, you will need three methods:
init: initialize your Queue (think: how will you store the queue's elements? You'll need to initialize an appropriate object attribute in this method)
insert: inserts one element in your Queue
remove: removes (or 'pops') one element from your Queue and returns it. If the queue is empty, raises a ValueError.
我用 'remove' 方法编写了以下代码,但是尽管该方法的行为正确地改变了数组,但它没有 return 'popped' 值:
class Queue(object):
def __init__(self):
self.vals = []
def insert(self, value):
self.vals.append(value)
def remove(self):
try:
self.vals.pop(0)
except:
raise ValueError()
如有任何帮助,我们将不胜感激!
嗯,在 Python 返回很容易,所以就这样做:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError()
幸运的是,pop()
已经同时删除和 returns 所选元素。
您需要使用 return
返回值。将您的删除方法更新为:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError
您必须明确 return 该值:
return self.vals.pop()
另请注意:
list.pop()
方法的参数是可选的;- 它还会引发一个
IndexError
,所以你应该只捕获那个特定的异常而不是每个异常; - 如果可能,你应该使用exception chaining;
- 您的
vals
会员有点私密,所以 rename it to start with an underscore; - 整个任务有点毫无意义,因为 Python 列表已经有
append()
和pop()
具有完全需要的行为的方法。