我怎样才能修改函数内的类?

时间:2017-02-15 22:23:50

标签: python class

我对Python中的类概念真的很陌生,所以请原谅我缺乏理解......我正在尝试根据我前面看到的YouTube教程制作基本且简单的RPG格斗。我认为你的角色的健康状况将基于“90 +等级* 10”。这很好用,直到我试图调整我的角色,发现水平增加但健康状况与我第一次加载程序时保持一致。我理解为什么会这样做,但有没有办法几乎绕过并根据级别进行更新?

这是一些代码

class Player:
    def __init__(self):
        self.level = 1
        self.maxhealth = 90 + self.level * 10
        self.health = self.maxhealth
PlayerIG = Player()

2 个答案:

答案 0 :(得分:2)

health定义为函数,而不是属性

class Player:
    def __init__(self):
        self.level = 1
        self.maxhealth = 90 + self.level * 10

    def health(self):
        return 90 + self.level * 10
PlayerIG = Player()
print(PlayerIG.health())

或提供更新health的功能,并在您升级时调用它。

class Player:
    def __init__(self):
        self.level = 1
        self.update_health()

    def update_health(self):
        self.health = 90 + self.level * 10

    def level_up(self):
        self.level += 1
        self.update_health()

答案 1 :(得分:0)

__init__仅在您实例化类时运行。我猜你正在更新玩家PlayerIG.level +=1的等级。如果你这样做__init__没有再次运行,因此maxhealth没有更新,所以你需要一个升级方法。

class Player:
    def __init__(self, level): # allows you to create a player of level != 1
        self.level = level
        self.maxhealth = 90 + self.level * 10
        self.health = self.maxhealth

    def level_up(self):
        self.level += 1
        self.maxhealth += 10

PlayerIG = Player(1) # creates a player of level 1 and maxhealth 100
PlayerIG.level_up() # PlayerIG is now level 2 with a maxhealth of 110