在我的项目中有一个类是美化的字典+错误检查。我想尽可能地精简它:它使用**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()
中
这是一种好的做法吗
最佳做法是使用dataclasses。
这正是一个令人惊奇的解决方案。医生也很棒
当然,这些是对象属性,而不是类属性。
dataclasses
的核心特性是每个对象都是轻量级的,并且比普通类的内存占用小得多玩得开心
相关问题 更多 >
编程相关推荐