如何将属性传递给Python中的类中的方法?
问题描述:
想要获得类的窍门,任何人都可以告诉我如何让我的方法“攻击”来增加基础伤害?目前它只是打印“伤害”并且不会将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()
答
self.baseDamage += damage
OR
self.baseDamage = self.baseDamage + damage
+0
上帝,我怎么错过了!我意识到它的伤害+ = self.baseDamage + =伤害 – kerberonix
答
您需要指定新的值回self.baseDamage。你的行在这里:
self.baseDamage + damage
没有存储结果的任何地方。要做到这一点,你要分配回self.baseDamage
这样的:
self.baseDamage += damage
要扩大,它类似于写出来是这样的:
self.baseDamage = self.baseDamage + damage
你甚至可以进一步简化和做这个:
self.baseDamage += randint(1,10)
另外,你应该确定它是什么你想要返回。如果你恢复了伤害,你没有返回“基础伤害+伤害”。也许你想在执行攻击计算后返回self.baseDamage?
由于您删除了您的其他问题:我强烈建议您撰写涵盖面向对象编程基础知识的教程。 [如何像计算机科学家一样思考 - 用Python学习](http://openbookproject.net/thinkcs/python/english2e/index.html)很不错,请看第13章。类和对象](http://openbookproject.net/thinkcs/python/english2e/ch13.html)和以下两章。 –