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

mar*_*rco 0 python

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

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

# this works, but I don't want to write n functions
def set_a(myvar_object, value):
    myvar_object.a = value

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

myvar = MyVarClass()
# I want to do the same as  myvar.a = 4
set_a(myvar, 4) # works as intended, now myvar.a is 4
set_vars(myvar, a, 4)  # error, a is not defined
Run Code Online (Sandbox Code Playgroud)

小智 5

你通常做的是为这个类创建一个方法,如下所示:

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

    def set_a(self, value):
        self.a = value
Run Code Online (Sandbox Code Playgroud)

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

setattr(myvar_object, 'a', value)
Run Code Online (Sandbox Code Playgroud)

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

myvar_object.a = 4
Run Code Online (Sandbox Code Playgroud)