为现有类型定义泛型方法的简单而肮脏的方法。

TypeQuer的Python项目详细描述


注意

自python 3.3以来,functools.singledispatch()函数 它在标准库中做类似的工作。我们建议 你用它代替这个。

另请参见PEP 443

Build Status

它提供了一种简单而肮脏的方法来定义现有的泛型方法 类型。您可以使用此命令生成重载方法。

兼容性

typequery不依赖于任何非标准库。它在工作 这些环境:

  • Python2.5–2.7,3.2–3.5
  • 皮顿,斯塔克莱斯特,皮比,Jython

安装

使用pip

安装
$ pip install TypeQuery

示例:json编码器

from typequery import GenericMethod
from sys import version_info
from re import sub
from numbers import Real
from collections import Mapping, Iterable

if version_info.major > 2:
    basestring = string = str
else:
    string = unicode

json = GenericMethod('json')

@json.of(type(None))
def json(value):
    return 'null'

@json.of(bool)
def json(value):
    return 'true' if value else 'false'

@json.of(Real)
def json(value):
    return str(value)

@json.of(string)
def json(value):
    def escape(match):
        s = match.group(0)
        if s in ('\\', '"', '\b', '\f', '\n', '\r', '\t'):
            return '\\' + s
        n = ord(s)
        if n < 0x10000:
            return r'\u%04x' % n
        n -= 0x10000
        s1 = 0xd800 | ((n >> 10) & 0x3ff)
        s2 = 0xdc00 | (n & 0x3ff)
        return r'\u%04x\u%04x' % (s1, s2)
    return '"%s"' % sub(r'([\\"]|[^\ -~])', escape, value)

@json.of(Iterable)
def json(value):
    return '[%s]' % ', '.join(json(element) for element in value)

@json.of(Mapping)
def json(value):
    return '{%s}' % ', '.join('%s: %s' % (json(string(key)), json(value))
                              for key, value in value.items())

并且定义的json函数的工作方式如下:

>>> json(123)
'123'
>>> json(True)
'true'
>>> json({'apple': 3, 'banana': 5, 'carrot': 1})
'{"apple": 3, "banana": 5, "carrot": 1}'

如上文所示,可以将类型感知实例方法定义为 类型甚至包括abc,如collections.Iterable

作者和许可证

Hong Minhee编写。分布在MIT license下。您可以从 Bitbucket repository

$ hg clone https://bitbucket.org/dahlia/typequery

变更日志

版本0.1.5

2016年6月23日发布。

  • 与最新的Python版本的兼容性:Python 3.3到3.5,以及PyPy3

版本0.1.4

2012年10月18日发布。

版本0.1.3

2012年8月29日发布

  • 修正了一个函数处理多个类型的错误。 [#2]

版本0.1.2

2012年8月15日发布。

    您可以使用^ {TT5}$继承现有泛型方法 方法
  • GenericMethod.of()decorator和 Decorator构造函数。

版本0.1.1

2012年5月22日发布。

  • 现在它可以很好地处理抽象基类,而不是abc.ABCMeta
  • 修正了GenericMethod.clone()方法的错误它没有反映 把自己的变化复制到原来的。 [#1]

版本0.1.0

2012年5月21日发布。

  • 初次发布

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

推荐PyPI第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?