gfrv 发表于 2015-12-15 11:57:55

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, timeout = (1, 3, 11, 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()




页: [1]
查看完整版本: python的接口实现zope.interface示例