簡體   English   中英

在 class 中更改另一個相關實例變量時如何更改實例變量?

[英]How to change instance variable when another related instance variable is changed in a class?

我最近嘗試編寫基於文本的游戲。 我想在玩家升級時更改玩家熟練度。 我應該如何更改我的代碼?

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()

可以直接在levelUp() function中重新計算proficiency屬性。 一旦你更新了level屬性,這個新的level值將用於計算新的proficiency

    def levelUp(self):
        self.level+=1
        self.proficiency = (int(self.level/3)+1)*2

您可以將proficiency屬性,因此每次引用它時都會從當前級別計算它。

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方法中重新計算它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM