Как мне напечатать переменную в операторе if класса?

#python-3.x

#python-3.x

Вопрос:

Я пытаюсь напечатать переменную в Python, используя следующий код:

 from time import sleep
import random

class Hero:
    def __init__(self,name):
        self.name = name

        if name == "rock":
            self.health = 50
            self.attack = 10

        elif name == "paper":
            self.health = 70
            self.attack = 7

        elif name == "scissors":
            self.health = 100
            self.attack = 5

    def dmg(self, other):
        other.ehealth -= self.attack

start = 1

while start == 1:
    name = input("Pick a class [rock/paper/scissors]")

    if name != "rock" or "paper" or "scissors":
        print ("That player does not exist. Try again.")
        start = 1

    else:
        start = 1

    player = Hero(name)
    enemyName = ["erock", "epaper", "escissors"]
    ename = random.choice(enemyName)

    print ("Your character is", name, "which comes with", self.health, "health, and", self.attack, "attack.")
    print("")

    sleep(1)

    print ("Your enemy is", ename, "which comes with", ehealth, "health, and", eattack, "attack.")
 

Я не могу найти способ получить доступ и распечатать переменную «self.health» в классе «Hero». Я могу получить доступ к «name» просто отлично. Может быть, дело в том, что она находится в операторе if? Кто-нибудь может мне помочь?

Комментарии:

1. Не могли бы вы, пожалуйста, исправить отступ в вашем коде? Трудно сказать, как выглядит ваш код в текущем формате.

Ответ №1:

self это просто имя параметра, используемое внутри методов. Не используйте его вне метода.

Чтобы получить доступ к переменным, обратитесь к ним, используя имя объекта ( player ), например

 player.health
 

name Переменная, которую вы печатаете, «работает», потому что она не из объекта. Вы должны использовать ту же нотацию и для доступа к ней:

 player.name