我有一个有两个必须有参数的类,我想为它提供一个可选参数的字典。我在 tensorflow optimizers中看到过类似风格的类定义。一个最小的例子是这样的:
class Dataset:
def __init__(self, source, target, **kwargs):
self.source = source
self.target = target
self.shuffle = kwargs['shuffle']
def shuffle(self):
return self
if __name__ == "__main__":
source = [1, 2, 3, 4]
targets = [0, 0, 1, 1]
kwargs = {
'shuffle' : False,
'shift' : 10
}
trainset = Dataset(source, targets, kwargs)
并产生错误:
File "test.py", line 20, in <module>
trainset = Dataset(source, targets, *kwargs)
TypeError: __init__() takes 3 positional arguments but 5 were given
除了帮助我修复错误之外,如果这种混合了固定参数和可变参数的类定义不是最佳实践,我将不胜感激。
解决方案:在评论和回复之后,解决方案是使用Dataset(source, targets, **kwargs).
侃侃尔雅
相关分类