2015-01-09 2 views
0

나는 파이썬 언어가 처음이다. 클래스 및 개체를 사용하여 스택 작업을 구현하는 중입니다. 이것은 지금까지 작성한 코드입니다.파이썬 스택 작업 클래스 생성

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

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() 
+0

감사합니다, 그것은 나에게 많은 : –

+0

@AhmedDhanani을 도왔다. 감사합니다 –

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() 
+0

그것은 나를 많이 도왔습니다 귀하의 회신 해 주셔서 감사합니다 :) –

+0

@AhmedDhanani 그것이 당신을 위해 작동한다면, 그것을 받아 들일 것을 잊지 마십시오. :) –