lambda проблема с выводом . at 0x02B6A2F8>

Собственно, сам код.

class Player:
    def __init__(self, name):
        self.name = name
        self.lvl = 1
        self.xp = 0
        self.hp = 10
        self.streng = 1
        self.agility = 1
        self.damage = 1
        self.points = 5

    def set_skills(self):
        while 1:
            print(f"{self.streng} - Сила  |  {self.agility} - Ловкость") # Вывод
            print("1) +1 steng\n2)+1 agility\n3)-1 steng\n4)-1 agility")

            a = input(" : ")

            if a == "1":    self.streng = lambda: self.streng + 1 if self.points >= 1 else print("1")



a = Player("merka")
a.set_skills()

не могу понять, из за чего ругает лямбду. Вроде обращаюсь как и положено. В чём проблема?


Вывод в принте - <function Player.set_skills.. at 0x02B6A2F8> - Сила | 1 - Ловкость


Ответы (1 шт):

Автор решения: Zhihar

во-первых в силе не хватает th

во вторых

self.streng = lambda: self.streng + 1 if self.points >= 1 else print("1")

делает следующее

  1. если self.points >= 1, то self.streng будет функцией self.streng + 1
  2. иначе выведется 1, а self.streng будет None - это результат работы функции

вам именно такая логика нужна было?

а вам надо без всяких лямбда делать:

if a == "1":    
    self.streng = self.streng + 1 if self.points >= 1 else 1
→ Ссылка