没有样板的属性。

cylitestblarghblargh的Python项目详细描述


Latest VersionCI statusCoverage

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.sattr.ib,也可以使用它们的无义别名attr.attributesattr.attr)。

您只需指定要使用的属性,然后attrs将为您提供:

  • 很好的可读性__repr__
  • 一整套比较方法,
  • 初始值设定项,
  • 还有更多

不需要一次又一次地编写枯燥的样板代码。

这使您能够将实际类与代码中的实际类型一起使用,而不是混淆tuples或行为混乱namedtuples。

所以放下那些类型较少的数据结构,欢迎一些类进入你的生活!

注意

我写了一篇explanation关于我为什么用叉子叉自己的characteristic。 它还没有死,但是attrs将有更多的新功能。

attrs的文档位于Read the Docs,即GitHub上的代码。 它在python 2.6、2.7、3.3+和pypy上进行了严格的测试。

作者

attrsHynek Schlawack编写和维护。

这项发展得到了Variomedia AG的善意支持。

它是characteristic的精神继承者,并渴望修复其中一些笨拙和不幸的决定。两者都是受twisted的FancyEqMixin启发的,但都是使用类装饰器实现的,因为sub-classing is bad for you,M'kay?

以下人员帮助将attrs形成现在的样子:

当然,characteristic'shall of fame也适用,因为它们共享很多代码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用并发hashmap减少线程池的内存使用?   java为什么在提交片段后出现错误“getParentActivityIntent:badActivity name”?   vim UltiSnips扩展java包   java给出了一个名称列表,如何插入、删除、显示、搜索和退出?Java程序   java Spring集成:只从FTP服务器下载新的或更新的文件?   使用Java中的Scala:将函数作为参数传递   java线程1每秒填充一个映射,线程2每60秒保存一个条目   java从私有类访问公共类中的方法/字段   如何使用ApacheSpark流媒体和JavaAPI从所有人那里获取英语推文?   java是否可以在父标记和子标记中编写XMLSchemainstance?   java无法读取文本文件,也找不到解决方案   java在运行时加载类时无法创建bean