class Critter(object): INST = ('Нужно начать заниматься вашим питомцем,вы сейчас видите все возможные варианты занятий:', 'Прогулка в парке', 'Кинуть мяч', 'Начать дрессировать', 'Сводить к ветеренару', 'Никудау не идти') # Ввод имени питомца,нужно сделать запись в файл всех параметров nameCritter = str(input("Дай имя своей зверушке: ")) # Создание логики для повышения уровня питомца def level(self): level = 1 # Уровень зверушки levelPoint = 0 # Очки уровня (очки для приобретения уровня) levelPointMax = 100 # Максимальное количество очков уровня # Условие, при котором очки уровня полностью равны максимальному значению очков уровня if levelPoint == levelPointMax: level +=1 levelPoint = 0 levelPointMax *= 2 # Условие, при котором очков уровня больше,чем максимальное значение уровня elif levelPoint > levelPointMax: level += 1 levelPoint -= levelPointMax levelPointMax *= 2 def instruction(self): global levelPoint self.INST print(self.INST) inst_input = int(input('Чем вы будете заниматься ?: ')) if inst_input == 1: print("Вы вабрали " + self.INST[inst_input]) levelPoint +=42 print(levelPoint) def __init__(self): print("Привет, я твоя зверушка " + self.nameCritter) # Создание инструкции для занятий crit = Critter() crit.instruction() crit.level() 

Gives an error message

  Traceback (most recent call last): File "critter.py", line 41, in <module> crit.instruction() File "critter.py", line 28, in instruction levelPoint = levelPoint NameError: name 'levelPoint' is not defined 
  • five
    Where is Point Point global? It is defined in the level () function and only in it exists. - Enikeyschik
  • 7
    And in general, tie with global variables. This does not lead to anything good. - Enikeyschik
  • In classes, do not use global variables (or rather do not use at all); instead, use the object's fields through self (for example, as self.levelPoint ). - insolor

0