2014-11-03 51 views
0

所以我試圖在基於文本的遊戲中爲武器系統設計一個類。基本上,我希望所有劍都能造成1-6傷害,然後根據武器修改器增加傷害。如果我使用修飾符調用類中的函數,我得到該類的工作,但我想設置類一次,而不必多次鍵入它在同一類的其他函數中使用__init__參數

這是我有的代碼。

import dice #uses random generation to simulate dice rolls 

class sword(): 

    def __init__(self, name, modifier): 
     self.name = name 
     self.mod = modifier 

    def dmg(self, modifier): 
     base = dice.d6 

     self.dmg = base + modifier 
     return self.dmg 

x = sword("Sword of coolness", 1) 
print x.name 
print x.dmg(1) 
+1

並注意''sword.dmg()''函數本身被替換爲別的東西,這可能不是你想要的。 – 2014-11-03 03:43:09

回答

2

這就是爲什麼你做了self.mod = modifier。現在該值可用於方法self.mod。所以,你可以讓你的方法:

def dmg(self): 
    base = dice.d6 

    self.dmg = base + self.mod 
    return self.dmg 

由於YS-L票據,評論,不過,你可能不希望這樣做,因爲你覆蓋dmg方法與價值。也許一個更好的主意,讓該方法不同的名稱:

def modify_dmg(self): 
    base = dice.d6 

    self.dmg = base + self.mod 
    return self.dmg 
+0

現在我的問題是,我甚至需要dmg方法中的'修飾符'參數?使用'modify_dmg'方法,我是否需要在dmg前面設置'self'? – CoopTang 2014-11-04 04:20:21

+0

@CoopTang:不,你不需要它(我從你的問題中複製了代碼並忘記刪除它,但現在我將它編輯出我的答案)。這樣做的關鍵是不必通過它。至於你是否需要'self.dmg',這取決於你想要這個方法做什麼。如果你不想「保存」對象上的'dmg'值,只想返回它,則不需要使用'self'。 – BrenBarn 2014-11-04 04:47:50

相關問題