更改python类中对象的属性

时间:2015-02-28 03:50:40

标签: python class

所以,我的问题是,如果我要根据这个课程进行比赛,比如说,一个精灵。我像这样制作精灵: elf = Race('Elf',100,50,60,90)

如果精灵进入战斗状态,那么如何让他的健康状况下降,或者他的任何其他属性都会根据某种奖励上升,比如他有某种设备给他+ (STAT)?

我知道有点具体的问题。

这是我到目前为止设置的Race类。 。

class Race(object):

race = None
health = None
strength = None
speed = None 
endurance = None


def __init__(self, race, health, strength, speed, endurance):
    self.race = race
    self.health = health
    self.strength = strength
    self.speed = speed
    self.endurance = endurance


def set_race(self, race):
    self.race = race

def set_health(self, health):
    self.health = health

def set_strength(self, strength):
    self.strength = strength

def set_speed(self, speed):
    self.speed = speed

def set_endurance(self, endurance):
    self.endurance = endurance

批评是受欢迎的,只要它有建设性!

1 个答案:

答案 0 :(得分:0)

嗯,首先,代码由于IndentationError而无法编译,但除了我想的那点之外(因此,请按照{{3}缩进4个SPACES, not tab } 为每个函数体和类体。)

话虽如此,你不需要任何吸气剂或安装者,因为它不是pythonic。如果要更改对象的属性,只需更改属性即可。如果您需要控制属性的设置方式,请使用PEP-8

此外,在下面的代码中,您实际上并未设置实例变量,您正在设置成员变量(请记住我修复了缩进):

class Race(object):

    race = None
    health = None
    strength = None
    speed = None 
    endurance = None

如果您要移除上述属性但保留self.*函数中的所有__init__(),那么您将拥有实例属性。术语self.*表示"这是我自己的属性,是我的确切实例"。

另外,请考虑重命名比赛。您希望类封装对象的所有属性。想一想:一个角色的种族没有健康。角色可以拥有健康,但角色还有种族。这两件事都是角色的属性。我建议将此课程命名为class Character(object):

相关问题