Есть ли простой способ глобализации переменной в классе - PullRequest
0 голосов
/ 01 сентября 2018

Мне интересно, есть ли простой способ глобализации переменной в классе Python. Я пытаюсь этот пример ниже, но получаю следующее сообщение об ошибке:

UnboundLocalError: локальная переменная 'gold', на которую ссылается перед присваиванием

Я не хочу вводить «глобальное золото» в каждую функцию.

gold = 10
class economy:
    global gold

   def income(self):
        gold+=5

    def expense(self):
        gold-=5

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Лучше положить золото в классе

class economy:
    def __init__(self, gold):
        self.gold = gold
    def income(self):
        self.gold+=5
    def expense(self):
        self.gold-=5

a = economy(90)
a.income()
a.gold # 95
a.expense()
a.gold() #90
0 голосов
/ 01 сентября 2018

Самая доступная переменная в классе - это атрибут, и для использования его вне класса вы можете создать функцию getVariable следующим образом:

gold = 10

class economy:
   gold = None 

   def __init__(self,gold) :
        self.gold = gold 

   def income(self):
        self.gold+=5

    def expense(self):
        self.gold-=5

    def getGold(self) :
        return self.gold

# to get the gold value from the object :
gold = economy(gold).getGold() 
...