100 likes | 271 Views
Zope Interface. —— hef 2011-01-09. 大纲. 接口简介 接口声明 接口实现. 接口简介. > 面向接口编程 interface 定义规范 class 编码实现 优点:1。便于程序规范化设计 2。便与团队协同开发 3。方便的代码复用,无需了解技术细节。 缺点:1。接口协同工作时,设计不良会出现难以发现的bug,因为你只遵循接口规范,不知道实现的技术细节。. 接口简介. > zope interface
E N D
Zope Interface ——hef 2011-01-09
大纲 • 接口简介 • 接口声明 • 接口实现
接口简介 > 面向接口编程 interface 定义规范 class 编码实现 优点:1。便于程序规范化设计 2。便与团队协同开发 3。方便的代码复用,无需了解技术细节。 缺点:1。接口协同工作时,设计不良会出现难以发现的bug,因为你只遵循接口规范,不知道实现的技术细节。
接口简介 > zope interface 在一些现代编程语言(比如Java、C#等)中,接口是语言本身直接提供的一个特性。由于Python不提供接口,但是我们可以通过继承zope.interface.Interface来实现接口的功能。
接口简介 接口是一类特殊的对象,它规范(并文档化)了所有“提供”这个接口的对象的外部行为。 一个接口通过如下方式来规范行为: - 在文档字符串里提供详细的文档 - 定义属性 - 不变量,也就是每个提供这个接口的对象所必须满足的条件
接口声明 接口从 zope.interface.Interface 继承而来.用 "class" 创建。在接口名字前面添加一个 I 前缀是一个很常见的习惯做法。虽然创建一个接口和创建一个类用的 都是“class”关键字,但接口不是类。 from zope.interface import Interface class IHello(Interface): def hello(name): """Say hello to the world""" >>>IHello <InterfaceClass __main__.IHello>
接口声明 zope.interface.Interface ------ Interface = InterfaceClass("Interface", __module__ = 'zope.interface') class InterfaceClass(Element, InterfaceBase, Specification): ...... Interface是InterfaceClass类的实例
接口声明 一个接口可以被用来声明某个特定对象属于一个特殊的类型。一个没有任何属性和方法的接口被称作标识接口 。 >>> from zope.interface import Interface >>> class ISpecialGuest(Interface): ... """A special guest""" 这个接口可以用来声明一个对象是一个特殊客人。
接口实现 class HelloComponent: implements(IHello) def hello(self, name): return "Hello%s!" % name 声明接口最通常的做法是在class中使用implements,当然一个类中也可以实现多个接口,implements(x,x,x,...),也可以在类体外使用 classImplements(cls,i1,i2...)使某个类实现某个或多个接口
接口实现 可以用几种方式来看看这个声明。 >>> IFoo.implementedBy(Foo) True 询问一个接口是否由一个对象提供 >>> foo = Foo() >>> IFoo.providedBy(foo) True