2013-03-07 3 views
0

Я пытаюсь использовать шаблон посетителя, чтобы получить значение self.coin из первого класса и вернуть его методу во втором классе, но его не работает, его всегда не возвращается ... может ли кто-нибудь помочь?pygame - python получение переменных с шаблоном посетителя

class coin_collector(Observer): 
    def __init__(self): 
     super(Observer, self).__init__() 
     self.coin_count = 0 
     self.run = True 
     self.coin = 0 

    def acceptVisitor(self, visitor): 
     visitor.visit(self) 

    def update(self, observable, other): 
     me = coin_collector() 
     me.coin_Count(other, True) 

    def coin_Count(self, value, TF): 
     run = TF 
     if run: 
      self.coin = value 
      print self.coin 
     return self.coin 

    def __str__(self): 
     return self.__class__.__name__ 

#this is part of a different class in a different file 
    def visit(self, location): 
     location.coin_Count(0, False) 

    def update(self): 
     visitee = coin_collector() 
     self.c_Count = self.visit(visitee) # for some reason this always returns none 
     print self.c_Count, "working" # this always prints none... 
+0

Что вы ожидаете вернуть? –

ответ

0

Итак, давайте начнем с Coin Collector. Его атрибут coin установлен в 0. У вас также есть второй класс с функцией update и visit.

Функция обновления создает coin_collector при каждом вызове. Затем он присваивает возвращаемое значение visit функции self.c_Count. Теперь посмотрим на функцию visit.

Он принимает в новенькой coin collector и возвращает Ни Он не будет назначать его параметр значения в coin поле, если будет проходить True в TF.

После возврата с coin_count функция, вы ничего не делаете в функции visit, поэтому возвращаемое значение теряется. Вот почему, когда вы пытаетесь присвоить результат self.visit, вы получаете None.

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