2017-08-18 60 views
0

這些是我不正當的基於文本的冒險代碼的2個部分,我試圖學習如何使用YouTube教程。我相信我的大部分問題都是因爲我非常確定的教程使用python2.something而我使用的是3. 我的問題是我想要在開始屏幕上列出「Player」類屬性,我已經成功完成了玩家名稱,但是我無法獲得以self.attack和self.health等列出的號碼進行打印。 大約5天前我第一次下載了python,所以如果可以的話請忍受一下noob。 讓我知道我可以改變,並提前謝謝你!打印我的班級屬性

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

'_init_'應該是'__init__'和什麼是'PlayerIG'? –

+0

'print(「Gold:%i」)%PlayerIG.gold'這顯然是不正確的語法。 –

+0

'self.health = self.health'沒有意義。 – lincr

回答

0

馬上有幾件事情:

  1. def _init_必須(注意雙下劃線)。
  2. self.health = self.health沒有意義 - 無論在=的右側需要存在,然後才能爲其分配其他變量,並且self.health在該行之前不存在。
  3. 變量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() 

有許多改進,你可以把從那裏,像定義__str__功能Player或在__init__使用keyword arguments方法。