Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中为具有许多属性的类编写初始值设定项?_Python_Sdk - Fatal编程技术网

如何在Python中为具有许多属性的类编写初始值设定项?

如何在Python中为具有许多属性的类编写初始值设定项?,python,sdk,Python,Sdk,我正在围绕一个不可更改的RESTAPI构建一个SDK(即,我不能更改模式)。API中的一些模型大约有20个属性,都带有公共getter和setter 其中1或2个属性不可为null,因此它们需要是\uuuuu init\uuuu方法中的位置参数。其他属性是可选的,因此它们可以是关键字参数。然而,一个带有19个关键字参数的\uuuu init\uuuu方法似乎很笨拙。例如: def __init__(self, req_prop, opt_prop1=None, opt_prop2=None, .

我正在围绕一个不可更改的RESTAPI构建一个SDK(即,我不能更改模式)。API中的一些模型大约有20个属性,都带有公共getter和setter

其中1或2个属性不可为null,因此它们需要是
\uuuuu init\uuuu
方法中的位置参数。其他属性是可选的,因此它们可以是关键字参数。然而,一个带有19个关键字参数的
\uuuu init\uuuu
方法似乎很笨拙。例如:

def __init__(self, req_prop, opt_prop1=None, opt_prop2=None, ...):
    self._req_prop = req_prop
    self._opt_prop1 = opt_prop1
    self._opt_prop2 = opt_prop2
    ...
我认为上面的实现对于使用带有方法提示的IDE的开发人员来说会更容易。或者,我可以使用**kwargs:

def __init__(self, req_prop, **kwargs):
    self._req_prop = req_prop
    self._opt_prop1 = None
    self._opt_prop2 = None
    ...
    for key, value in **kwargs.items():
        setattr(self, key, value)
这使得
\uuuu init\uuuu
方法更具可读性,但要求开发人员打开文件,检查要作为关键字参数传递的属性名称。此外,IDE也不能帮助拼写

使SDK代码更简洁、开发人员代码更详细的最后一个选项是强制使用属性设置器:

def __init__(self, req_prop):
    self._req_prop = req_prop
对于第三方开发人员来说,哪种实现最具python风格且最简单?如果你有引文,请附上引文