我有一个类,它可以用很多参数初始化,并且它可以作为一个添加方法不断增长。有没有一种方法可以自动地将int方法中的所有位置参数添加到对象的属性中?例如;
class trainer:
def __int__(self, model="unet", encoder_name="resnet18", encoder_weights="imagenet",
in_channels=3, num_classes=1, loss="jaccard",
ignore_index=0, learning_rate=1e4, learning_rate_schedule_patience=10,
ignore_zeros=True):
# authomatically add the initial properties
self.model = model
self.encoder_name = encoder_name
self.encoder_weights = encoder_weights
self.in_channels = in_channels
self.num_classes = num_classes
.
.
.
self.ignore_zeros = ignore_zeros
2条答案
按热度按时间yfwxisqw1#
这是与您的
__init__
对应的dataclass
。基本上,您只需声明一个带有注解属性的类,可能还有一个默认值,
@dataclass
装饰器将为您生成样板代码,如__init__
或__repr__
,我建议您阅读更多的documentation**PS.**类名通常是PascalCase(或CapWords),所以我为您做了更改。
lsmepo6l2#
另一种方法是循环传递给
__init__
的参数,然后使用setattr
到self
保存变量。这里的优点是它默认为您的默认kwargs,但更新为任何输入kwargs(在本例中为
num_classes
)-