先贴一段代码
class Facenet(object):
_defaults = {
"model_path" : "model_data/facenet_mobilenet.pth",
"input_shape" : [160, 160, 3],
"backbone" : "mobilenet",
}
def __init__(self, **kwargs):
self.__dict__.update(self._defaults)
for name, value in kwargs.items():
setattr(self, name, value)
解释一下 **kwargs
和__dict__
都是字典,一个是输入参数的字典(形如A=1,B=“cat”),一个是类的参数的字典。
那么我们会问 为什么要加循环再用setattr,而不是也直接update(**kwargs)一下呢?
前者可能在代码风格和差错工作量上更好一点