我是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'未定义”
我不确定自己犯了什么错误。 如果有人可以帮助我,我会很满意的。
答案 0 :(得分:0)
您的MyStack
和front
不是实例变量,而是您无法访问它的原因。您必须使用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()