Python天生支持接口,是吗?

Python天生支持接口,是吗?

Python是一种动态类型语言,拥有ducking type的特征,因此是天生支持接口,是这样理解吗?

[Copy to clipboard] [ - ]
CODE:
class Wind:
    def method(self):
        print "Wind::method"

class Horse:
    def method(self):
        print "Horse::method"

objects = [Wind(), Horse()]
for o in objects:
    o.method()

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

[Copy to clipboard] [ - ]
CODE:
interface Method {
    void method();
}

class Wind implements Method {
    void method() {
        print("Wind::method");
    }
}

class Horse implements Method {
    void method() {
        print("Horse::method");
    }
}

但是在Python就不需要了,既然这样为什么在有些框架里面又引入了interface,Python不是天生支持接口吗?
有篇文章叫 Python Interfaces are not Java Interfaces  可以搜来看下。
不是
你这是生成了两个不同object。
接口是IXXX xxx = new XXX;


QUOTE:
原帖由 撒哈拉里的鱼 于 2009-1-12 13:32 发表
你这是生成了两个不同object。
接口是IXXX xxx = new XXX;

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


QUOTE:
原帖由 luffy.deng 于 2009-1-11 22:00 发表
有篇文章叫 Python Interfaces are not Java Interfaces  可以搜来看下。

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


QUOTE:
原帖由 BigPython 于 2009-1-12 13:45 发表

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

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


QUOTE:
原帖由 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"