Python 当类中的另一个相关实例变量发生更改时,如何更改实例变量?
我最近尝试编写一个基于文本的游戏。当玩家升级时,我想改变玩家的熟练程度。我应该如何为此更改代码Python 当类中的另一个相关实例变量发生更改时,如何更改实例变量?,python,python-3.x,python-2.7,class,oop,Python,Python 3.x,Python 2.7,Class,Oop,我最近尝试编写一个基于文本的游戏。当玩家升级时,我想改变玩家的熟练程度。我应该如何为此更改代码 class Player: def __init__(self,name,_class,_race): self.name = name self.level = 1 self.proficiency = (int(self.level/3)+1)*2 self.inventory = 0 self.skills
class Player:
def __init__(self,name,_class,_race):
self.name = name
self.level = 1
self.proficiency = (int(self.level/3)+1)*2
self.inventory = 0
self.skills = returnSkills()
self.stats = returnStats()
self._class = _class
self._race = _race
self.exp = 0
def levelUp(self):
self.level+=1
newPlayer = Player("Player","Barbarian","Human")
print(newPlayer.level)
for i in range(10):
print(newPlayer.level)
print(newPlayer.proficiency)
newPlayer.levelUp()
您可以将
熟练程度
设置为属性,以便每次引用时都从当前级别计算熟练程度
class Player:
def __init__(self,name,_class,_race):
self.name = name
self.level = 1
self.inventory = 0
self.skills = returnSkills()
self.stats = returnStats()
self._class = _class
self._race = _race
self.exp = 0
@property
def proficiency(self):
return (int(self.level/3)+1)*2
...
或者您可以将其保留为普通属性,并在
levelUp
方法中重新计算 您可以直接在levelUp()
函数中重新计算熟练程度
属性。更新level
属性后,level
的新值将用于计算新的熟练程度
def调平(自):
自身水平+=1
自我熟练程度=(智力(自我水平/3)+1)*2
您可以将熟练程度
设置为属性,因此每次引用时都会从当前级别计算它。对于提出此问题的人来说,函数修饰符可能有点高级。事实上,我已经写python好几年了,你教了我一些新东西,所以谢谢!)如果你学到了一些新东西,你可能应该投票给这个答案@ericstevens26101