打印我的班级属性

时间:2017-08-18 02:47:44

标签: python

这些是我行为错误的基于文本的冒险代码的两部分,我正在尝试学习如何使用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

1 个答案:

答案 0 :(得分:0)

立即采取一些措施:

  1. def _init_需要def __init__(请注意双重下划线)。
  2. self.health = self.health没有意义 - =右侧的任何内容都需要存在才能为其分配其他变量,而self.health不会&# 39; t存在直到该行。
  3. 变量PlayerIG从未分配给任何内容,因此start1中的所有代码都无法正常工作(除非在其他地方完成,您还没有将其包含在问题中)。
  4. 你问题中的工作版本就像是

    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