类方法不返回值

时间:2015-03-01 20:00:53

标签: python methods

我正在完成MTIx 6.00.1x计算机科学入门课程,但我在创建课程方法时遇到了麻烦。具体来说,我的'Queue'类中的'remove'函数不会像我期望的那样返回值。

以下是请求的上下文:

  

在本练习中,您将编写第一个类,即Queue类。在Queue类中,您将需要三种方法:

     

init :初始化你的队列(想一想:你将如何存储队列的元素?你需要在这个方法中初始化一个合适的对象属性)

     

插入:在您的队列中插入一个元素

     

删除:从队列中删除(或“弹出”)一个元素并将其返回。如果队列为空,则引发ValueError。

我用'remove'方法编写了以下代码,但是虽然方法的行为正确地改变了数组,但它并没有返回'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()

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

嗯,在Python中返回相当容易,所以就这样做:

def remove(self):
    try:
        return self.vals.pop(0)
    except:
        raise ValueError()

幸运的是,pop()已经同时删除并返回所选元素。

答案 1 :(得分:0)

您需要使用return来返回值。将您的删除方法更新为:

def remove(self):
     try:
         return self.vals.pop(0)
     except:
         raise ValueError

答案 2 :(得分:0)

您必须明确返回该值:

return self.vals.pop()

另请注意:

  • list.pop()方法的参数是可选的;
  • 它也会引发IndexError,因此您应该只捕获该特定异常而不是每个异常;
  • 如果可能,您应该使用exception chaining;
  • 您的vals会员有点私密,所以rename it to start with an underscore;
  • 整个任务有点无意义,因为Python列表已经有append()pop()方法具有完全必需的行为。