Мы можем добиться большего успеха, чем то, что вы пытаетесь сделать, имея класс Player
с пользовательским крюком __setattr__
.
class Player:
def __init__(self):
vars(self)['health'] = 100 # suppress __setattr__
def __setattr__(self, attr, value):
if attr == 'health':
print('health changed to {}'.format(value))
super().__setattr__(attr, value)
Конечно, вы можете расширить этот класс в соответствии со своими потребностями,Например, вы можете добавить атрибут name
и напечатать '{}'s health changed to {}'.format(self.name, value)
.
Демо:
>>> p = Player()
>>> p.health
100
>>> p.health += 2
health changed to 102
В качестве бонуса, теперь вы можете иметь несколько игроков с разными уровнями здоровья нав то же время и не нужно управлять глобальными переменными.