2015-11-02 110 views
0

想要獲得類的竅門,任何人都可以告訴我如何讓我的方法「攻擊」來增加基礎傷害?目前它只是打印「傷害」並且不會將baseDamage添加到它。如何將屬性傳遞給Python中的類中的方法?

from random import randint 

class Weapon: 
    def __init__(self, name, baseDamage, price): 
     self.name = name 
     self.baseDamage = baseDamage 
     self.price = price 
    def attack(self): 
     damage = randint(1,10) 
     self.baseDamage + damage 
     return damage 

def main(): 
    steelSword = Weapon("Steel Longsword", 10, 250) 
    print("Name:", steelSword.name, "\nDamage:", steelSword.baseDamage, "\nPrice:", steelSword.price,"coins") 
    print(steelSword.attack()) 

main() 
+0

由於您刪除了您的其他問題:我強烈建議您撰寫涵蓋面向對象編程基礎知識的教程。 [如何像計算機科學家一樣思考 - 用Python學習](http://openbookproject.net/thinkcs/python/english2e/index.html)很不錯,請看第13章。類和對象](http://openbookproject.net/thinkcs/python/english2e/ch13.html)和以下兩章。 –

回答

0
self.baseDamage += damage 

OR

self.baseDamage = self.baseDamage + damage 
+0

上帝,我怎麼錯過了!我意識到它的傷害+ = self.baseDamage + =傷害 – kerberonix

1

您需要指定新的值回self.baseDamage。你的行在這裏:

self.baseDamage + damage 

沒有存儲結果的任何地方。要做到這一點,你要分配回self.baseDamage這樣的:

self.baseDamage += damage 

要擴大,它類似於寫出來是這樣的:

self.baseDamage = self.baseDamage + damage 

你甚至可以進一步簡化和做這個:

self.baseDamage += randint(1,10) 

另外,你應該確定它是什麼你想要返回。如果你恢復了傷害,你沒有返回「基礎傷害+傷害」。也許你想在執行攻擊計算後返回self.baseDamage?

相關問題