微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python的接口实现zope.interface示例

python支持多继承,但是不支持接口,zope.inteface是其三方的接口实现库,在twisted中有大量使用

from zope.interface import Interface
from zope.interface import implementer
import socket
 
class IHostNameResolver(Interface):
    def getHostByName(name,timeout = (1,3,11,45)): # 可以不用self
        """
        Resolve the domain name C{name} into an IP address.
        """
 
"""
类装饰器等价于:implementer(IHostNameResolver)(HostNameResolver)
"""
@implementer(IHostNameResolver)
class HostNameResolver:
 
    def getHostByName(self,name,45)):
        try:
            address = socket.gethostbyname(name)
        except socket.error:
            return 'none'
        else:
            return address
 
resolver = HostNameResolver()
print resolver.getHostByName('localhost')
 
# 判断HostNameResolver是否实现了接口IHostNameResolver
print IHostNameResolver.implementedBy(HostNameResolver) # True,调用 SpecificationBasePy.implementedBy()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐