使用单个函数更改多个实例的类变量

时间:2017-01-21 13:50:19

标签: python-2.7

我想使用函数将多个实例的相同变量更改为相同的东西。我想用它来做这样的事情:

Class Player:
   arbitrary value = 90

我创建了多个玩家并将它们放在一个列表中:

playerlist = [player1,player2,player3]

def changevars(variable,newvariable):
   for x in playerlist:
       x.variable = newvariable

但是当然我遇到了未声明问题的变量'。 那么做这样的事情的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

使用带setattr的字符串:

def changevars(players, varname, value):
    for player in players:
        setattr(player, varname, value)

然后您可以使用以下内容:

changevars(player_list, "arbitrary_value", 5)

我将玩家列表作为参数而不是全局变量。这样,您可以在所有玩家或仅在某些玩家上更改变量。除此之外,全局变量通常被认为是不好的做法。