刚开始用python attr,看起来不错。该包允许通过使用工厂创建新对象来轻松创建空的可变参数,但我不清楚使用默认值填充这些空对象的预期方法。例如,这可以创建一个具有默认值的新列表,但默认值会在方法调用中丢失:
import attr; import typing
@attr.s(auto_attribs=True)
class C:
x: int=66
# I want loi as a list with default value [1,2,3]
loi: typing.List[int] = attr.Factory(list)
def __attrs_post_init__(self):
self.loi.extend([1,2,3])
cx = C()
cx.loi = [1,2,3]