我正在努力学习Python - 我目前使用的是3.6.3版本。
在使用kwargs时,参数验证/解析的最佳实践是什么?
或者,在不使用kwargs的情况下,参数验证/解析的最佳实践是什么?
class foo:
def __init__(self, **kwargs):
if 'a' in kwargs:
self.a = kwargs['a']
else:
self.a = 0
class bar(foo):
def __init__(self, **kwargs):
super().__init__()
if 'x' in kwargs:
self.x = kwargs['x']
else:
self.x = 23
# b and y are undefined, but my classes use kwargs - what is the best practice for validating / parsing dynamic arguments?
test = bar(b=1,y=24)
**kwargs
更常见的用法是在以下情况下使用:(a)你继承的类不是你拥有或控制的;(b)你实际上没有继承该类。pandas.read_hdf
提供了一个很好的例子:它使用pytables
,其中包括HDF5,在read_hdf
方法中存在许多潜在的变化超出其控制范围,因此该方法具有自己的参数,然后是**kwargs
,它被传递到上游由pytables
使用。 - Mike Williamson