检索从类派生的所有类,并按给定的优先级和顺序对它们进行排序,这样就可以轻松地绘制和使用类似插件的类。
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/>;。
更多信息
- github:
- <;https://github.com/odkr/sortableclasses.py>;
- 阅读文档:
- <;https://sortableclassespy.readthedocs.io/en/latest/>;