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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM