Python最小锅炉板类初始化

2024-04-19 14:44:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的项目中有一个类是美化的字典+错误检查。我想尽可能地精简它:它使用**kwargs,尽管没有从任何东西继承,而且大多数类都是由

def __init__(self, *args, **kwargs):
    ...
    self.attr = kwargs.pop('attr', attr_default)
    # Multiple lines like this one. 
    ...

所以我的问题是,我能在不破坏API的情况下减少所有的样板文件吗

我的第一个想法是使用显式可选参数,这可以去掉attr_default,但是为了去掉self.attr赋值块,我需要所有参数的iterable(不再是kwargs

编辑:iterable可能位于locals()

这是一种好的做法吗


Tags: 项目selfdefault参数字典initdef错误
1条回答
网友
1楼 · 发布于 2024-04-19 14:44:30

最佳做法是使用dataclasses
这正是一个令人惊奇的解决方案。医生也很棒

from dataclasses import dataclass


@dataclass
class BoilerAway:
    attr1: str
    attr2: str
    another_attr: int


obj = BoilerAway("hello", "world", 42)

当然,这些是对象属性,而不是类属性。
dataclasses的核心特性是每个对象都是轻量级的,并且比普通类的内存占用小得多

玩得开心

相关问题 更多 >