检索从类派生的所有类,并按给定的优先级和顺序对它们进行排序,这样就可以轻松地绘制和使用类似插件的类。

sortableclass的Python项目详细描述


使类按优先级和优先级排序。优先顺序 类和它们的优先级在运行时被取消集中定义。

版权所有2016、2017、2018 Odin Kroeger

用例

sortable classes使类可排序。如果你想做的话这很有用 获取一些输入,应用一组转换,并输出结果 (即,在unix-ish系统上编写所谓的“过滤器”)。 当然,您可以只写,例如return t1(t2(t3(...(tn(input)))))) 但需要添加的转换越多,维护起来就越困难。 sortableclasses允许您将转换转换为类,分配 每一个都有优先权(或前任和继任者的列表),然后 使用sortsorted对它们进行排序。

>>> import sortableclasses
>>> import abc
>>> import functools
>>>
>>> class Transform(sortableclasses.Pluggable):
...     @staticmethod
...     @abc.abstractmethod
...     def transform(input):
...         pass
...
>>> class MakeContent(Transform):
...     @staticmethod
...     def transform(input):
...         if input == ':-(':
...             return ':-|'
...         return input
...
>>> class MakeHappy(Transform):
...     successorof = (MakeContent,)
...     @staticmethod
...     def transform(input):
...         if input == ':-|':
...             return ':-)'
...         return input
...
>>> class MakeVeryHappy(Transform):
...     successorof = (MakeHappy,)
...     @staticmethod
...     def transform(input):
...         if input == ':-)':
...             return ':-D'
...         return input
...
>>> transforms = sorted(Transform.getderived())
>>> transforms
[<class 'MakeContent'>, <class 'MakeHappy'>, <class 'MakeVeryHappy'>]
>>> input = ':-('
>>> functools.reduce(lambda k, s: s.transform(k), transforms, input)
':-D'

安装

使用sortableclasses的风险由您自行承担。 你被警告了。

sortableclasses仅在python 3中有效。

克隆存储库并运行setup.py install

文档

有关参考信息,请参见<;https://sortableclassespy.readthedocs.io/en/latest/>;。

您还可以通过以下方式查看内联文档:

pydoc sortableclasses

联系人

如果sortableclasses有问题,请在以下位置打开问题:
<;https://github.com/odkr/sortableclasses.py/issues>;

许可证

此程序是免费软件:您可以重新分发和/或修改 根据由 自由软件基金会,或者许可证的第3版,或者 (由您选择)任何更高版本。

分发这个节目是希望它会有用, 但没有任何保证;甚至没有 适销性或适合某一特定目的的适销性。见 GNU通用公共许可证了解更多详细信息。

你应该收到GNU通用公共许可证的副本 还有这个节目。如果没有,请参见<;http://www.gnu.org/licenses/>;。

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

推荐PyPI第三方库


热门话题
java对ServiceListener和ServiceTracker调用提供了哪些排序保证?   java找不到方法格式的符号(DateTimeFormatter)?   mysql有没有一种方法可以将TCPDump输出到一个文件中,并用Java对其进行过滤,每5秒钟用新数据覆盖一次该文件?   java如何最好地配置用户上传支持文件的上传位置   java我在Android上使用OData4j,我无法获取实体   JPA实体关系简单示例中的java获取错误   JAVANoClassDefFoundError:安卓。应用程序。用法安卓中的UsageStatsManager   Eclipse中javaoo代码分析   java MethodVisitor抛出类格式错误   java为什么在从ViewModel调用时,改型排队不起作用?   调试小程序Java控制台:删除跟踪消息大小限制   java复杂安卓活动动画   java如何在使用JDOM2解析XML时忽略注释内容   java通过循环创建文本字段   即使在bufferedwriter关闭后也未发现java文件异常   单链表恢复中的java错误