如何将变量的名称作为变量传递

时间:2016-06-20 07:34:56

标签: python

如何将我想要更改的变量设置为函数参数?我想只定义一个函数,而不是set_a(value),set_b(value),set_c(value),...

    Array
(
    [ok] => 0
    [errmsg] => aggregation result exceeds maximum document size (16MB)
    [code] => 16389
)

4 个答案:

答案 0 :(得分:5)

你通常做的是为这个类创建一个方法:

class MyVarClass:
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def set_a(self, value):
        self.a = value

如果出于某种原因,不能像这样做,并且你只将属性的名称作为字符串,那么你可以使用setattr:

setattr(myvar_object, 'a', value)

但通常你所做的只是这一行:

myvar_object.a = 4

答案 1 :(得分:1)

这是通过setattr完成的。

def set_vars(myvar_object, var_name, value):
    setattr(myvar_object, var_name, value)

这不一定是这样做的最佳方式。它通常表明不同的数据结构会更好,但如果不是这种情况。

你会注意到,如果你走这条路,除了你认为你将来会改变一些东西之外,没有太多理由去做def而不是直接调用setattr。

答案 2 :(得分:0)

使用dict

怎么样?
class MyVarClass:
    def __init__(self):
        self.vars = {"a": 1, "b": 2, "c": 3}

def set_vars(myvar_object, var_name, value):
    myvar_object.vars[var_name] = value

答案 3 :(得分:0)

**

var_name = ''
class MyVarClass:
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

# this is what I actually want:
def set_vars(myvar, var_name, value):
    myvar.var_name = value
    print (myvar.var_name)

myvar = MyVarClass()

set_vars(myvar, "b", 6)  

**