Python:我可以在变量中存储变量名吗?

时间:2015-10-27 22:19:19

标签: python class

我有一个程序,我正在尝试根据程序中先前指定的某个类来更改某个类的某个变量。我想知道我是否可以通过将变量名存储在另一个变量中来指示我想要更改哪个变量,是否可能?

示例:

class Vars:
    first = 0
    second = 0

variable_name = first

Vars.variable_name += 1

我希望在执行此代码后Vars.first等于1,这可能吗?

2 个答案:

答案 0 :(得分:2)

是的,您可以使用getattr() / setattr()

In [1]: class Vars:
   ...:     first = 0
   ...:     second = 0
   ...:

In [2]: variable_name = 'first'  # You have to change it to string since we don't know anything
                                 # about the `first` object outside of the class.

In [3]: old_value = getattr(Vars, variable_name)

In [4]: setattr(Vars, variable_name, old_value + 1)

In [5]: Vars.first
Out[5]: 1

您也可以使用课程' __dict__对象,但这有点脏(和unpythonic)方式:

In [1]: class Vars:
        first = 0
        second = 0
   ...:

In [2]: Vars.first
Out[2]: 0

In [3]: variable_name = 'first'

In [4]: Vars.__dict__[variable_name] += 1

In [5]: Vars.first
Out[5]: 1

In [6]: Vars.__dict__[variable_name] += 1

In [7]: Vars.first
Out[7]: 2

答案 1 :(得分:1)

有一个名为setattr的Python函数,用于在对象中设置属性。

您可以存储所需的变量名称并进行更改,如下例所示:

variable_name = "first"
setattr(Vars,variable_name,1)