2016-08-24 7 views
-4

다음은 제가 작성한 간단한 파이썬 2.6 코드입니다. 출력에서 0이 반환되는 이유가 궁금한 점을 제외하고는 코드가 예상대로 작동합니까?왜이 코드가 0을 반환합니까?

대단히 감사합니다!

class One(object): 
    def __init__(self): 
     self.A = 0 

    def Two(self, *args): 
     for x in args: 
      if x == 1: 
       print x 
     return self 

    def answer(self): 
     print (self.A) 

ABC = One() 
ABC.Two(1, 1, 9, 0, 7).answer() 

OUTPUT

1 
1 
0 
Process finished with exit code 0 
+3

'self.A'는 0입니다, 그렇지 않습니까? 'answer()'는'self.A'를 출력합니다. – Li357

+4

'answer()'는'self.A'를 출력하기 때문에'__init__'에서 0으로 초기화되고 절대로 변경되지 않습니다. – zondo

+0

종료 코드 0 메시지를 묻는 중입니까? – Barmar

답변

1

당신이 다르게 쓰기 아마 경우에 당신은 무슨 일이 일어나고 있는지 이해하게 될 것입니다 : 당신이 볼 수 있듯이

class One(object): 

    def __init__(self): 
     self.A = 0 

    def Two(self, *args): 
     for x in args: 
      if x == 1: 
       print x 
     return self 

    def answer(self): 
     print(self.A) 

ABC = One() 
ABC.Two(1, 1, 9, 0, 7) 
print '-' * 80 
ABC.answer() 

이 방법 answer가있다 하나는 0이 아니며 메서드가 아닙니다. Two

+0

감사합니다. 나는 그것을 다시 작성 했으므로 이제는 의미가 있습니다. –

+0

@LemonTiger 당신이 환영합니다, 가장 좋은 방법은 여기에 stackoverflow 누군가가 당신에게 가장 도움이 답변을 확인하고 있습니다. 또한, downvotes에 의해 귀찮게하지 말고 ... 어쨌든,이 [링크] (http://stackoverflow.com/help/how-to-ask) 다음에 다시 물어볼 때 도움이 될 것입니다. SO에 오신 것을 환영합니다. – BPL

관련 문제