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() 具有完全需要的行为的方法。