zope.interface 庫學習一

因爲python沒有接口概念,因此zope 提供了個第三方庫開源使用,下面簡單介紹zope.interface.implementer的使用python

直接看例子,下面例子是在twisted裏摘錄的dom

接口IResolverSimplesocket

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

實現BlockingResolveride

@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)

能夠經過spa

IResolverSimple.implementedBycode

IResolverSimple.providedByblog

對實現進行檢測接口

foo = BlockingResolver()get

IResolverSimple.implementedBy(BlockingResolver) #display Trueclass

IResolverSimple.implementedBy(foo) #display True

相關文章
相關標籤/搜索