#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