python创建堆栈操作类

2024-10-01 09:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python语言的新手。我正在尝试使用类和对象实现堆栈操作。这是我到现在为止写的代码:

class StackOperation:

    def __init__(self):
        front = 0
        MyStack = [None]*5

    def PushValue(self, value):
        MyStack[front] = value
        front += 1

    def PopValue(self):
        return MyStack[front -= 1]

    def PrintStack(self):
        for i in range(len(MyStack)):
            print MyStack[i]

stack = StackOperation()
stack.PushValue(10)
print stack.PopValue()

但是当我试图运行它时,这个代码给了我一个错误。错误显示:

“名称错误:未定义全局名称'MyStack'”

我不确定我犯了什么错误。 如果有人能帮我,我会很高兴的。你知道吗


Tags: 代码self名称语言valuestackdef错误
2条回答

最好将它们用作instance variable,而不是global variable,因为它们都在同一个类中。像这样:

#!/usr/bin/python
# -*- coding: utf-8 -*-
class StackOperation:

    def __init__(self):
        self.front = 0
        self.MyStack = [None]*5

    def PushValue(self, value):

        self.MyStack[self.front] = value
        self.front += 1

    def PopValue(self):
        return self.MyStack[self.front]

    def PrintStack(self):
        for i in range(len(self.MyStack)):
            print self.MyStack[i]

stack = StackOperation()
stack.PushValue(10)
print stack.PopValue()

你的MyStackfront不是实例变量,所以你不能访问它。必须使用self使其成为实例变量。你知道吗

class StackOperation:

    def __init__(self):
        self.front = 0
        self.MyStack = [None]*5

    def PushValue(self, value):
        self.MyStack[self.front] = value
        self.front += 1

    def PopValue(self):
        return self.MyStack[self.front]

    def PrintStack(self):
        for i in range(len(self.MyStack)):
            print self.MyStack[i]

stack = StackOperation()
stack.PushValue(10)
print stack.PopValue()

相关问题 更多 >