2024-05-14 00:34:26 发布
网友
我在写一个游戏,我有两个变量:
strength = 10 hp = 50 + (strength * 5)
我能够构建一个允许我更新strength变量以及其他属性的系统,但我假设hp会在我更新strength时更新,但事实并非如此
strength
hp
strength += skilladdnum print("you now have", strength, "strength!")
当strength更新时hp有什么方法更新吗
在语言层面上,没有办法以某种方式将两个T变量“绑定”在一起,这样当另一个变量被更新时,其中一个变量就会自动更新,如果你这么想的话
正确的方法是指定一个“setter”函数,您可以调用该函数来更新强度,它还可以更新hp。 所以你可以吃点类似的东西
def set_strength(new_strength): return new_strength, 50 + (new_strength * 5) strength, hp = set_strength(strength + skilladdnum)
但这有点难看,感觉不习惯。 一旦你进入了classes和object oriented programming,你就会有一个类Character,它会有字段(变量)hp和strength,在这个类的外部,你只会使用像set_strength这样的函数,在类Character内部,你会注意在所有地方正确地更新它们
Character
set_strength
如果我理解正确,您希望hp在更新strength时,通过hp = 50 + (strength * 5)公式进行更改
hp = 50 + (strength * 5)
但是,当您第一次在hp = 50 + (strength * 5)行中赋值hp时,您正在初始化变量hp,使其成为给定状态下所述公式的结果hp在赋值后不会以任何方式与strength绑定
因此,您应该在每次更新strength时更新hp
您可以通过一个函数以“Pythonic”的方式完成这项工作,该函数同时更新这两个函数,使其成为主代码中的一行,并且更干净。这也可以用lambda或property以更高级的方式完成
property
HP将进入一个函数,您可以随时调用它的值:
strength = 50 def hp(): return 50 + (strength * 5)
如果这在类中使用,则可以使用属性装饰器从字符中获取值:即character.strength、character.hp。这看起来很相似:
class Hero: def __init__(self, strength): self.strength = strength @property def hp(self): return 50 + (self.strength * 5)
在语言层面上,没有办法以某种方式将两个T变量“绑定”在一起,这样当另一个变量被更新时,其中一个变量就会自动更新,如果你这么想的话
正确的方法是指定一个“setter”函数,您可以调用该函数来更新强度,它还可以更新hp。 所以你可以吃点类似的东西
但这有点难看,感觉不习惯。 一旦你进入了classes和object oriented programming,你就会有一个类
Character
,它会有字段(变量)hp
和strength
,在这个类的外部,你只会使用像set_strength
这样的函数,在类Character
内部,你会注意在所有地方正确地更新它们如果我理解正确,您希望
hp
在更新strength
时,通过hp = 50 + (strength * 5)
公式进行更改但是,当您第一次在
hp = 50 + (strength * 5)
行中赋值hp
时,您正在初始化变量hp
,使其成为给定状态下所述公式的结果hp
在赋值后不会以任何方式与strength
绑定因此,您应该在每次更新
strength
时更新hp
您可以通过一个函数以“Pythonic”的方式完成这项工作,该函数同时更新这两个函数,使其成为主代码中的一行,并且更干净。这也可以用lambda或
property
以更高级的方式完成HP将进入一个函数,您可以随时调用它的值:
如果这在类中使用,则可以使用属性装饰器从字符中获取值:即character.strength、character.hp。这看起来很相似:
相关问题 更多 >
编程相关推荐