这些是我行为错误的基于文本的冒险代码的两部分,我正在尝试学习如何使用youtube教程。我相信我的大多数问题都出现了,因为我很确定使用python2.something而我正在使用3。 我的问题是我试图在开始屏幕上列出“播放器”类属性,我已成功使用Playername,但我无法将列出的数字列为self.attack和self.health等进行打印。 我大约5天前第一次下载了python,如果可以的话请耐心等待。 让我知道我可以改变什么,并提前感谢你!
class Player:
def _init_(self, name):
self.name = name
self.maxhealth = 100
self.health = self.health
self.attack = 10
self.gold = 0
self.bandages = 0
def start1():
os.system("cls")
print("Name: %s" % (PlayerIG))
print("Attack: {}".format (PlayerIG.attack))
print('Health: {}/{}'.format(PlayerIG.health, PlayerIG.maxhealth))
print("Gold: %i") % PlayerIG.gold
print("Bandages: %i") % PlayerIG.bandages
答案 0 :(得分:0)
立即采取一些措施:
def _init_
需要def __init__
(请注意双重下划线)。self.health = self.health
没有意义 - =
右侧的任何内容都需要存在才能为其分配其他变量,而self.health
不会&# 39; t存在直到该行。PlayerIG
从未分配给任何内容,因此start1
中的所有代码都无法正常工作(除非在其他地方完成,您还没有将其包含在问题中)。 你问题中的工作版本就像是
class Player:
def __init__(self, name, maxhealth, health, attack, gold, bandages):
self.name = name
self.maxhealth = maxhealth
self.health = health
self.attack = attack
self.gold = gold
self.bandages = bandages
def start1():
PlayerIG = Player('foo', 100, 50, 10, 0, 0)
print('Name: {}'.format(PlayerIG.name))
print('Health: {}/{}'.format(PlayerIG.health, PlayerIG.maxhealth))
print('Attack: {}'.format(PlayerIG.attack))
print('Gold: {}'.format(PlayerIG.gold))
print('Bandages: {}'.format(PlayerIG.bandages))
start1()
您可以从中进行许多改进,例如为Player
定义__str__
函数或在__init__
方法中使用keyword arguments。