初始化基本堆栈,但我不理解错误



我正在尝试使用按下和流行功能初始化基本堆栈。测试时出现了问题。您会在代码中注意到我推了2次,因此堆栈的打印应显示[5,5],而它显示None。我可以修改代码以最终使其正常工作,但是我将无法完全理解我的方法的基本概念和错误。所以我要求提供建议和指针。请查看这些代码,并告诉我我做错了什么。

这是具有所有功能的类的代码,它被命名为 stack_class

class Stack:
    def __init__(self):
        self._values = []
        print ('Stack initialized...')
        return
    def push(self, var):
        ok = self._values.append(var)
        return ok
    def pop(self):
        self.stack.pop()
    def __str__(self):
        output = "{0}".format(self.ok)
        return output

这是测试代码:

from stack_class import Stack
ob_1 = Stack()
ob_1.push(5)
print(ob_1.push(5))

发生的事情是 append方法不返回任何东西。

print [].append(1)
>>> None

它可以完成工作,但没有返回任何东西,这就是为什么您在变量ok中获得None的原因。我认为您想返回_values

def push(self, var):
    self._values.append(var)
    return self._values

输出:

Stack initialized...
[5, 5]

另外,这是我第一次阅读有关空的返回约定。这不是必需的。