在python中以更干净的方式创建具有变量属性的对象

时间:2016-01-25 18:07:01

标签: python

我是python的新手,我不得不使用非GoTo的某些属性创建一个对象。例如:

None

来自Java的土地,我知道python充满了短手,所以想知道是否有更清晰的方式来编写上述内容?当然,我的实际对象有更多的属性。我试过搜索但找不到任何有用的东西,所以我怀疑是否可能,如果有超过2个变量属性则不会缩放。

1 个答案:

答案 0 :(得分:5)

一种方法是使用double-star operator,如下所示:

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)

简单来说:用关键字参数构造一个字典,然后将前面带有**的字典传递给callable。

但是,None 经常(并非总是)用作可选参数的默认值。 可能这也会起作用:

return MyObj(name=name, obj_one=self.obj_one, obj_two=self.obj_two)

没有任何if或那种东西。