2015-11-02 64 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?

相关问题