Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改python类中对象的属性_Python_Class - Fatal编程技术网

更改python类中对象的属性

更改python类中对象的属性,python,class,Python,Class,所以,我的问题是,如果我要以这个职业为基础进行比赛,比如说,一个小精灵。我让精灵像这样: elf=种族('elf',100,50,60,90) 如果精灵进入战斗,我如何让他的生命值在这一次下降,或者他的任何其他属性在某种奖励的基础上上升,比如如果他有某种装备给予他+(属性) 我知道这是一个特别的问题 这是我到目前为止安排的班级竞赛 class Race(object): race = None health = None strength = None speed = None endura

所以,我的问题是,如果我要以这个职业为基础进行比赛,比如说,一个小精灵。我让精灵像这样: elf=种族('elf',100,50,60,90)

如果精灵进入战斗,我如何让他的生命值在这一次下降,或者他的任何其他属性在某种奖励的基础上上升,比如如果他有某种装备给予他+(属性)

我知道这是一个特别的问题

这是我到目前为止安排的班级竞赛

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

欢迎批评,只要是建设性的

首先,由于缩进错误,代码无法编译,但这不是我想的重点(因此,请使用4个空格缩进,而不是按照每个函数体和类体的制表符)

话虽如此,您不需要任何getter或setter,因为它不是pythonic。如果要更改对象的属性,只需更改属性即可。如果需要控制属性的设置方式,请使用

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

如果要删除上述属性,但将所有的
self.
保留在
\uuuu init\uuuuu()
函数中,那么您将拥有实例属性。术语
self.*
表示“这是我自己的一个属性,是我的一个确切实例”


<>也请考虑更名比赛。您需要一个类来封装对象的所有属性。想想看:一个角色的种族没有健康。角色可以有生命值,但角色也有种族。这两者都是角色的属性。我建议将此类命名为
类字符(对象):

不幸的是,这更适合于一对一的教程,而不是SO的一般性质,因为您本质上是在询问对象实例的基本原理以及字段是如何修改的。我发布的代码删除了我出于某种原因而使用的缩进。在我的文本编辑器中不是这样的。这些属性是比赛的一部分(每个属性都有一个起始属性),然后我会将比赛添加到角色类中,这样角色的基本属性就是比赛的属性,然后可以通过护甲和武器加值、法术效果和战场效果(如山或密林)进行修改。我遇到的问题是修改统计数据,并将种族类包含到角色类中。我开始怀疑,如果有一个种族和种族统计的列表,这样做是否会更容易。
class Race(object):

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