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