Форум сайта python.su
0
При создании объекта в методе-конструкторе def __init__ создаётся переменная hunger. Подскажите, почему не видно переменную hunger в статическом методе def eat ? Она же объявлена глобальной?
class Critter(object): def __init__(self, name, hunger = 0, boredom = 0): hunger = random.randint(0, 3) boredom = random.randint(0, 3) self.name = name self.hunger = hunger self.boredom = boredom def __pass_time(self): ... def __str__(self): ... @property def mood(self): ... def talk(self): ... @staticmethod def eat( food = 4): food = int(input("Сколько кусочков корма вы дадите им? От 1 до 5. ")) print("Мням-мням... Спасибо.") global hunger hunger -= food if hunger < 0: hunger = 0 self.__pass_time() @staticmethod def play(fun = 4): ... def main(): crit1 = Critter("Бобик") crit2 = Critter("Шарик") crit3 = Critter("Полкан") sp = [crit1, crit2, crit3] choice = None while choice != "0": print \ (""" Critter Caretaker
Отредактировано Franek (Авг. 6, 2016 13:41:30)
Офлайн
253
Franekу вас две переменные hunger одна переменная класса Critter.hunger другая переменная экземпляра self.hunger и вы ни в одну не попали.
Она же объявлена глобальной?
Отредактировано doza_and (Авг. 6, 2016 14:19:21)
Офлайн