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

问题描述 投票:0回答:2

我正在尝试初始化一个基本堆栈 - 使用推送和弹出功能。 测试时出现问题。您会在代码中注意到我已经推送了 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))
oop python-3.x stack
2个回答
1
投票

发生的情况是

append
方法不返回任何内容。

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

它完成了它的工作,但不返回任何东西,这就是为什么你在变量

None
中得到
ok
。我认为您想返回
_values
来代替:

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

输出:

Stack initialized...
[5, 5]

此外,这是我第一次读到空返回约定。没必要。


0
投票

在您的测试代码中,您没有通过执行“print(ob_1.push(5))”来打印堆栈。它的作用是触发入栈函数,将另一个 5 插入堆栈中。要打印堆栈内容,只需使用堆栈名称: 打印(ob_1) 这将返回堆栈内容:[5,5]

© www.soinside.com 2019 - 2024. All rights reserved.