没有样板的属性。
cylitestblarghblargh的Python项目详细描述
attrs是一个MIT许可的python包,带有类装饰器,可以简化实现最常见的与属性相关的对象协议的繁琐工作:
>>> importattr>>> @attr.s... classC(object):... x=attr.ib(default=42)... y=attr.ib(default=attr.Factory(list))>>> i=C(x=1,y=2)>>> iC(x=1, y=2) >>> i==C(1,2)True >>> i!=C(2,1)True >>> attr.asdict(i){'y': 2, 'x': 1} >>> C()C(x=42, y=[]) >>> C2=attr.make_class("C2",["a","b"])>>> C2("foo","bar")C2(a='foo', b='bar')
(如果您不喜欢好玩的attr.s和attr.ib,也可以使用它们的无义别名attr.attributes和attr.attr)。
您只需指定要使用的属性,然后attrs将为您提供:
- 很好的可读性__repr__,
- 一整套比较方法,
- 初始值设定项,
- 还有更多
不需要一次又一次地编写枯燥的样板代码。
这使您能够将实际类与代码中的实际类型一起使用,而不是混淆tuples或行为混乱namedtuples。
所以放下那些类型较少的数据结构,欢迎一些类进入你的生活!
注意
我写了一篇explanation关于我为什么用叉子叉自己的characteristic。 它还没有死,但是attrs将有更多的新功能。
attrs的文档位于Read the Docs,即GitHub上的代码。 它在python 2.6、2.7、3.3+和pypy上进行了严格的测试。