轻松地为python对象提供自我标识

whatami的Python项目详细描述


Pypi Version

关于

whatami是抽象可配置性和实验性的尝试 便于识别。它通过利用对象 反思和定义一个简单、灵活、一致的API 即使python对象最初不是 设计来做的。

它是这样工作的:

  • 对象根据parameters=value字典提供自己的id。 它们返回what类的一个实例 一个名为“what()”的方法。
  • 可选地,这个包提供一个whatable装饰器来提供 从对象字典、插槽和属性创建what对象。 所有属性都将被视为配置的一部分,除了那些 他的名字以“\u”开头或结尾。

id字符串

它们的目标是,如果总是在python中实现\u repr 考虑递归并只公开改变结果的参数。他们差不多 类似于python函数调用,嵌套参数扩展为类似于python调用 他们自己。

功能

  • 将您的计算表示为标准的id字符串。
  • 可插拔体系结构。
  • id字符串可以被分析和操作。
  • “whatamise”您的库。支持:
  • 方便的数据整理功能。

示例

whatami很简单但很强大。这个例子只显示了它的表面和 更好的文件来了,但同时,检查一下文件串 以及单元测试。

# Objects of this class provide a configuration (`What` object)classDuckedConfigurable(object):def__init__(self,quantity,name,company=None,verbose=True):self.quantity=quantityself.name=nameself.company=companyself.verbose=verbosedefwhat(self):returnWhat('ducked',{'quantity':self.quantity,'name':self.name,'company':self.company})duckedc=DuckedConfigurable(33,'salty-lollypops',verbose=False)# The configuration id string sorts by key alphanumeric order, helping id consistencyprintduckedc.what().id()# ducked(company=None,name='salty-lollypops',quantity=33)# Using the whatable decorator makes objects gain a what() method;# in this case, what() is infered automatically@whatableclassCompany(object):def__init__(self,name,city,verbose=True):super(Company,self).__init__()self.name=nameself.city=cityself._verbose=verbose# not part of configself.social_reason_='%s S.A., %s'%(name,city)# not part of configcc=Company(name='Chupa Chups',city='Barcelona')print(cc.what().id())# Company(city='Barcelona',name='Chupa Chups')# Ultimately, we can nest whatables...duckedc=DuckedConfigurable(33,'salty-lollypops',company=cc,verbose=False)printduckedc.what().id()# ducked(company=Company(city='Barcelona',name='Chupa Chups'),name='salty-lollypops',quantity=33)# We can also decorate functions and partials - use with caution@whatabledefbuy(company,price=2**32,currency='euro'):return'%s is now mine for %g%s'%(company.name,price,currency)printbuy.what().id()# buy(currency='euro',price=4294967296)

版本控制

自4.0.0版以来,whatami使用semantic versioning,其中一个主要版本 如果默认id字符串的生成方式不同,即使没有api,也会发生这种情况 实际上改变了。

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

推荐PyPI第三方库


热门话题
java如何从servlet向所有登录用户发送数据   java为什么需要ScheduledExecutorService。shutdown()使用我100%的CPU吗?   用于计算ArrayList中重复项的java嵌套循环无法正常工作   如何获取使用audioinputstream java下载文件的进度   java Kurento复合网格记录   识别方法的java问题   java on Markerclick listener绘制路线并计算距离   java在API级别16上创建/生成R.id   java如何修复HQL查询中的“意外令牌”错误   Java创建损坏的ZIP文件   JavaGSON。如何将json对象转换为json数组?   java需要配置Spring安全性和Hibernate   Vowpal Wabbit的Java API?