python创建堆栈操作类

时间:2015-01-09 06:50:09

标签: 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()

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

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

我不确定自己犯了什么错误。 如果有人可以帮助我,我会很满意的。

2 个答案:

答案 0 :(得分:0)

您的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()

答案 1 :(得分:0)

您最好将它们用作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()