免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2537 | 回复: 8
打印 上一主题 下一主题

Python天生支持接口,是吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-11 17:53 |只看该作者 |倒序浏览
Python是一种动态类型语言,拥有ducking type的特征,因此是天生支持接口,是这样理解吗?

  1. class Wind:
  2.     def method(self):
  3.         print "Wind::method"

  4. class Horse:
  5.     def method(self):
  6.         print "Horse::method"

  7. objects = [Wind(), Horse()]
  8. for o in objects:
  9.     o.method()
复制代码

如果要在Java中完成这样的功能,就必须
1、让Wind和Horse继承同一个父类,使用父类操作method()。
2、提供一个接口,Wind和Horse分别实现method(),使用接口操作method()。

  1. interface Method {
  2.     void method();
  3. }

  4. class Wind implements Method {
  5.     void method() {
  6.         print("Wind::method");
  7.     }
  8. }

  9. class Horse implements Method {
  10.     void method() {
  11.         print("Horse::method");
  12.     }
  13. }
复制代码

但是在Python就不需要了,既然这样为什么在有些框架里面又引入了interface,Python不是天生支持接口吗?

论坛徽章:
0
2 [报告]
发表于 2009-01-11 22:00 |只看该作者
有篇文章叫 Python Interfaces are not Java Interfaces  可以搜来看下。

论坛徽章:
0
3 [报告]
发表于 2009-01-11 22:39 |只看该作者
不是

论坛徽章:
0
4 [报告]
发表于 2009-01-12 13:32 |只看该作者
你这是生成了两个不同object。
接口是IXXX xxx = new XXX;

论坛徽章:
0
5 [报告]
发表于 2009-01-12 13:45 |只看该作者
原帖由 撒哈拉里的鱼 于 2009-1-12 13:32 发表
你这是生成了两个不同object。
接口是IXXX xxx = new XXX;

晕啊,python中有new关键字吗?

论坛徽章:
0
6 [报告]
发表于 2009-01-12 13:51 |只看该作者
原帖由 luffy.deng 于 2009-1-11 22:00 发表
有篇文章叫 Python Interfaces are not Java Interfaces  可以搜来看下。

大概看了下,好像目前Python中并没有引入关于interface的关键字,能给个例子吗?

论坛徽章:
0
7 [报告]
发表于 2009-01-12 17:44 |只看该作者
zope interface

论坛徽章:
0
8 [报告]
发表于 2009-01-12 21:34 |只看该作者
原帖由 BigPython 于 2009-1-12 13:45 发表

晕啊,python中有new关键字吗?


呵呵,你没明白我的意思。

论坛徽章:
0
9 [报告]
发表于 2009-01-12 22:23 |只看该作者
原帖由 BigPython 于 2009-1-12 13:45 发表

晕啊,python中有new关键字吗?

你没有明白撒哈拉里的鱼的意思。不知道java的interface是什么,以下是胡乱写的。
class Interface():
    """Is this a interface keyword?"""
class Method(Interface):
    def method():
        """ Is this a interface ?"""
class  Wind(Method):
    def method(self):
        print "Wind::method"
class Horse(Method):
    def method(self):
        print "Horse::method"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP