python类属性,self.value, [value]是否可赋为变量,随条件变化??

如下列代码, 程序员不应该这么重复, 如果self可赋变量,那么代码量可以缩减大部分。 有老司机知道吗?

    def change_setting(self, set, value):
        if set == 'output_flag':
            self.output_flag = value
            print(f'{set}值已修改为:{value}')
        elif set == 'msg_flag':
            self.msg_flag = value
            print(f'{set}值已修改为:{value}')
        elif set == 'price_range_max':
            self.price_range_max = value
            print(f'{set}值已修改为:{value}')
        elif set == 'price_range_min':
            self.price_range_min = value
            print(f'{set}值已修改为:{value}')
        elif set == 'price_max':
            self.price_max = value
            print(f'{set}值已修改为:{value}')
        elif set == 'price_min':
            self.price_min = value
            print(f'{set}值已修改为:{value}')
        elif set == 'refresh_time':
            self.refresh_time = value
            print(f'{set}值已修改为:{value}')

可以呀
你可以这样写
setattr(self,set,value)
但是有个小问题,之前的代码有过滤作用,如果输入的内容不在列表里,则不会创建一个新的变量
所以你也应该先定义一个元组(这样避免不小心修改了),把允许赋值的内容加进去,调用之前先判断一下set in 元组,避免传错字符串造成一大堆bug

您看是不是可以这样,使用字典来存放各个变量参数,不过self.msg初始化得放一个其他的函数中

def init_msg(self):
    self.msg = {'output_flag': 0, 'msg_flag': 0, 'price_range_max': 0, 'price_range_min': 0, 'price_max': 0, 'price_min': 0, 'refresh_time': 0}

def change_setting(self, set1, value):
    self.msg[se1] = value

另外建议参数不要命名为 set,这是关键字

只能这样写,除非你用别的方法简化。。。
而且,这个也不需要改了啊?