如下列代码, 程序员不应该这么重复, 如果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,这是关键字
只能这样写,除非你用别的方法简化。。。
而且,这个也不需要改了啊?