zoukankan      html  css  js  c++  java
  • zope.interface 库学习一

    由于python没有接口概念,所以zope 提供了个第三方库开源使用,下面简单介绍zope.interface.implementer的使用

    直接看例子,下面例子是在twisted里摘录的

    接口IResolverSimple

    class IResolverSimple(Interface):
        def getHostByName(name, timeout = (1, 3, 11, 45)):
            """
            Resolve the domain name C{name} into an IP address.
            """
    

    实现BlockingResolver

    @implementer(IResolverSimple)
    class BlockingResolver:
    
        def getHostByName(self, name, timeout = (1, 3, 11, 45)):
            try:
                address = socket.gethostbyname(name)
            except socket.error:
                msg = "address %r not found" % (name,)
                err = error.DNSLookupError(msg)
                return defer.fail(err)
            else:
                return defer.succeed(address)

    可以通过

    IResolverSimple.implementedBy

    IResolverSimple.providedBy

    对实现进行检测

    foo = BlockingResolver()

    IResolverSimple.implementedBy(BlockingResolver) #display True

    IResolverSimple.implementedBy(foo) #display True

  • 相关阅读:
    RSA算法
    本地CodeForces
    基于Giolite 多人开发
    DES算法
    MD5算法
    仓库库存管理系统(C+MySQL+ODBC)
    Spring源码解析(一)开篇
    JDK动态代理实现源码分析
    J.U.C Atomic(一)CAS原理
    JDK 注解详解
  • 原文地址:https://www.cnblogs.com/bjdxy/p/3182142.html
Copyright © 2011-2022 走看看