这是我目前的实施:
def update_obj(obj_id, field1=None, field2=None):
obj = ... # some code to get object by obj_id
if field1 is not None:
obj.field1 = field1
if field2 is not None:
obj.field2 = field2
update_obj(1, field1='new value')
update_obj(2, field2='new value')
update_obj(3, field1='new value', field2='another new value')
我尝试在一行中进行评估,例如:
obj.field1 = field1 if field1 is not None else ob.field1
但是,obj.field1 = obj.field1
非常冗余,obj.field1 = field1 if field1 is not None
不是有效语句。
有什么建议让它更简单,更清洁?我正在使用python 2.7。
答案 0 :(得分:1)
如果它的代码重复困扰你,你可以使用反射,例如:
obj.__dict__.update(n,v for n,v in locals() if n in 'field1','field2' and v is not None)
答案 1 :(得分:0)
我使用or
。
obj.field1 = field1 or or obj.field1
它不会删除冗余,但它更简洁一点。