我是python的新手,我不得不创建一个只有某些属性的对象None.例:
if self.obj_one is None and self.obj_two is None:
return MyObj(name=name)
elif self.obj_one is not None and self.obj_two is None:
return MyObj(name=name, obj_one=self.obj_one)
elif self.obj_one is None and self.obj_two is not None:
return MyObj(name=name, obj_two=self.obj_two)
else:
return MyObj(name=name, obj_one=self.obj_one, obj_two=self.obj_two)
Run Code Online (Sandbox Code Playgroud)
来自Java的土地,我知道python充满了短手,所以想知道是否有更清晰的方式来编写上述内容?当然,我的实际对象有更多的属性.我尝试搜索但找不到任何有用的东西,所以如果有可能或不存在,如果有超过2个变量属性则不会缩放.
一种方法可能是使用双星运算符,如下所示:
kwargs = {'name': name}
if self.obj_one is not None:
kwargs['obj_one'] = self.obj_one
if self.obj_two is not None:
kwargs['obj_two'] = self.obj_two
return MyObj(**kwargs)
Run Code Online (Sandbox Code Playgroud)
简单来说:您使用关键字参数构造一个字典,然后将该字典前面**的字符传递给callable.
然而,None就是经常(并不总是)作为可选参数的默认值.可能这也会起作用:
return MyObj(name=name, obj_one=self.obj_one, obj_two=self.obj_two)
Run Code Online (Sandbox Code Playgroud)
没有任何if或那种东西.
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |