python里面也有java中的抽象类和接口吗?

python里面也有java中的抽象类和接口吗?

好比,java里面写applet程序,需要继承applet,如果写事件,还要用到事件的接口。

python里面实现类似的功能需要哪方面的知识呢?

我写过一个类是继承BaseHTTPServer的,我照抄的SimpleHTTPServer的代码来实现
例如doGET之类的请求。
虽然代码写出来了,也能用,但是不明白其中的道理,有高手可以解释一下吗?
在python没有内置的接口功能,不过已经作为新版本考虑的内容了。而且在python中对于接口的需求主要集中在框架设计上,而不象在java中使用得那么频繁。主要原因我想可能是:

1.python的自省功能强大。只要调用的对象有相应的属性和方法即可,对于对象的所属类没有什么要求。虽然不象接口那样有严格的定义,但使用决对是方便。
2.python支持多重继承,可以解决单根继承带来的问题。

因此对于接口可以通过多种方式来满足要求,而且很灵活。

所以象你上面的例子,而是简单的继承而已。对于可以定制的方法只要在派生类中进行覆盖即可。
但是我不明白的是,为什么GET请求来的时候,就会自动调用这个函数名下面的东西呢?
这个是谁规定的?是基类?还是基类的基类?
他们处理这种类似于事件驱动的东西,使用的什么样的一种机制?
谢谢。。
这就是框架实现的功能啊。举个简单的例子:

[Copy to clipboard] [ - ]
CODE:
def deal(obj):
    print obj.func()

上面这个函数会自动调用obj对象的func()方法。因此在java中这样的用法需要定义一个interface,而python不需要管它。而且obj到底是一个什么对象都无所谓,只要有这个方法就行。

然后

[Copy to clipboard] [ - ]
CODE:
class A:
    def func(self):
        print 'A'

class B(A):
    def func(self):
        print 'B'

a = A()
b = B()
deal(a)
deal(b)

这样不管a还是b都可以执行。关键要看调用函数是如何调用的。意思是一样的。
也就是说,BaseHTTPServer 类或者它的基类,当收到用户HTTP报文的时候,会针对报文内容进行判断,然后存在一个地方包含对doGet()的调用,尽管这个函数还没有实现?
然后我在派生类中直接写doGET的实现部分,也就是实现了对GET请求时候的处理?
我似乎有点悟出来了,,,
对基本上就是这个意思。这与java的框架编程是一样的。比如在请求的handler的处理中有关于某个处理器对应的doGet的调用,但此时框架只关心如何调用,至于如何处理,或者预先写一个缺省的处理器类,或者可以让用户根据缺省类进行派生,覆盖你关心的方法,不关心的可以使用缺省的处理方法来处理。因此在生成server时,通过传入处理器类,这样可以由框架根据类来自动创建实例。而这个类则完全是客户来定制的。因此一旦框架写好了。以后有特殊处理只要派生新的类,覆盖要处理的方法,即可。非常方便。
谢谢,又学到了不少知识。
java中的抽象类是为了实现c++中的抽象类和模板之类的东西
接口是为了解决java不能多继承的问题

很显然楼主是从java才开始接触面向对象程序设计的。实际上java的“接口”是一个特例而非普通现象。如果可以多继承的话,那还要接口干什么?

实际上python才是最符合现实逻辑的“面向对象”
python允许多继承,正如现实中,你既是公民也是纳税人,我们直接使用这些“类”而不需要特别的创建什么“纳税人接口”
python中所有的类,都是抽象类,或者说根本不存在抽象类,类方法可以直接使用,“类”本身在定义的时候就已经实例化,你可以通过输入:某类[回车]看到其内存句柄。这是符合事实的,并且时简约明了的。
而在C++和java当中,一个类定义了以后,肯定是占用了内存空间,但是同时他又没有实例化,如果要使用的话还得实例化一次,又要占用一些内存空间。而类定义所占用的内存空间,使用率很低。
python中不存在“基类”的概念,也没有单根,更没有基本类型,所有的一切都是对象。
python是无神论的最完美体现,没有亚当,没有上帝,没有鬼神,没有唯一的主。你爱信什么信什么,爱是什么是什么,没有任何约束,但是不能存在特殊。

另外,python根本没有意义去模仿java的接口,因为那完全没必要,python的标准类就完全包含java中的接口的所有功能。倒是模仿一下c++的模板会有些实际用途。
在做框架时,以于传入对象做一些约定,还是很有必要,象zope3/twisted等都使用了接口的机制。主要是为了保证传入对象的正确性。

而对于C++的模板(或叫泛型),我看倒没有必要摸仿,因为python本身就是动态类型,传什么都行。已经就是这种方式了。
接口更重要的是它代表的是一套“标准”!
ps:大公司都是靠玩标准赚钱的。