我尝试创建一个函数,以便在统计数据增加或减少时提高最大hp。我试过改变self.maxHpCalc()播放器。**将变量=(int)移动到orc类中我可以想到的每个原因并且没有运气。取决于我如何改变它我得到自我/玩家没有属性强度,maxHp或maxHpCalc没有定义。
char *base = (char *) 0;
我改变的一切让我玩家/自己目前没有属性力量
答案 0 :(得分:0)
这里有一些固定的代码,有一个小的驱动程序来练习这些类。
请注意以下更改
maxHpCalc
应该是绑定方法,如果它是对player
实例中包含的数据进行操作的话。因此,它应该有self
参数,并且应该引用该自引用中的strength
和defense
。_maxHpCalc
时,您应该参考self
。我使它成为一个绑定方法,它需要一个实例来处理。我添加了一个下划线表示它是一种私人方法。maxHpCalc
和strength
的值后调用defense
,否则在调用该函数时不会定义它们。player.maxHp
毫无意义。 player
是一个类,没有静态
属性maxHp
,您需要一个实例来访问该属性。我创建了一个实例并引用它。代码:
class player:
def __init__(self, hp=1, maxHp=1, strength=4, defense=5):
self.hp = hp
self.strength = strength
self.defense = defense
self.maxHp = self._maxHpCalc()
def _maxHpCalc(self):
return self.strength + self.defense
class orc(player):
def __init__(self, hp, maxHp, strength , defense):
super().__init__(hp, maxHp, strength, defense)
p = player()
o = orc(1,2,3,4)
print(p.maxHp)
print(o.maxHp)
我还要问,为什么要包含一个构造函数参数maxHp
,如果你不使用它但是从其他参数计算它?