因爲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