2016-08-24 4 views
-4

Ниже приведен простой код Python 2.6, который я написал. Код работает, как ожидалось, за исключением того, что мне любопытно, почему нулевой (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() 

ВЫВОД

1 
1 
0 
Process finished with exit code 0 
+3

'self.A' is 0, не так ли? 'answer()' печатает 'self.A' – Li357

+4

Потому что' answer() 'говорит для печати' self.A', который инициализируется 0 в '__init__' и никогда не менялся. – 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 является один возвращающий ноль, а не метод Two

+0

Спасибо, я переписал его, и теперь это имеет смысл. –

+0

@LemonTiger Добро пожаловать, лучший способ поблагодарить кого-то здесь, в stackoverflow, подтверждая ответ, который вам больше всего помог. Кроме того, не надо беспокоиться о downvotes ... В любом случае, возможно, это [ссылка] (http://stackoverflow.com/help/how-to-ask) поможет вам в следующий раз, когда вы спросите еще раз. Добро пожаловать в SO – BPL

Смежные вопросы