interfaces_annotations.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:Expert-Python-Programming_Second-Edition 作者: PacktPublishing 项目源码 文件源码
def ensure_interface(function):
    signature = inspect.signature(function)
    parameters = signature.parameters

    @wraps(function)
    def wrapped(*args, **kwargs):
        bound = signature.bind(*args, **kwargs)
        for name, value in bound.arguments.items():
            annotation = parameters[name].annotation

            if not isinstance(annotation, ABCMeta):
                continue

            if not isinstance(value, annotation):
                raise TypeError(
                    "{} does not implement {} interface"
                    "".format(value, annotation)

                )

        function(*args, **kwargs)

    return wrapped
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号