Python: как передать атрибут класса из функции в функцию?

Пытался передать атрибут класса внутри функций класса, но не получается.
# coding=utf-8


class Char():
    def __init__(self, score=30, sila=0, lovkost=0):
        self.score = score
        self.sila = sila
        self.lovkost = lovkost

    def choice(self):
        while self.score:
            print(u"""\tКуда кинуть очки?
            \tвведите цифру пункта
            \t1 - сила
            \t2 - ловкость""")
            print(u"очков - %s "
                  u" силы - %s "
                  u"ловкости - %s" % (self.score, self.sila, self.lovkost))
            a = int(input(u"Пункт меню: "))
            if a == 1:
                self.pribafka(self.sila)
            elif a == 2:
                self.pribafka(self.lovkost)

    def pribafka(self, param):
        param += 1
        self.score -= 1
        print(u"прибавлено")


pers = Char()


Через функцию choice узнается в какой пункт кинуть очко и передает в функцию pribafka. Но она только убавляет количество очков, и параметр персонажа не прибавляет. Через el/if внутри 2 функции всё работает, но многовато кода получается.
  • Вопрос задан
  • 3263 просмотра
Решения вопроса 1
@Mintormo
Неудивительно. В функцию pribafka параметры передаются по значению. Внутри к параметру прибавляется единичка, но у нас копия в параметре, а не оригинал переменной! Потому ничего и не меняется. Надо так:
a = int(input(u"Пункт меню: "))
if a == 1:
self.sila = self.pribafka(self.sila)
elif a == 2:
self.lovkost= self.pribafka(self.lovkost)

def pribafka(self, param):
param += 1
self.score -= 1
print(u"прибавлено")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы