今天的Python如何用于文档目的的接口?

时间:2015-06-02 19:00:47

标签: python interface

我很久以前就读过this post了,我试图创建自己的小例子:

class IExample(Interface):
    """ An object that serves as an Example."""

class IExamp(IExample):
    """ Examp object representing the current state of Example."""

    def set_state(state):
        """ Sets the state of Example."""

    def get_state():
        """ Gets the state of Example."""

class Example():

    def __init__(self, state=0):
        self.state = state

class Examp(Example):

    def __init__(self, state=0):
        Example.__init__(self, state)

    def set_state(self, state):
        self.state = state

    def get_state(self):
        return self.state

e = Examp()
print(e.get_state())

我得到一个错误(对于许多老式的Python程序员来说应该是显而易见的,但对我来说不是这样,因为我在2012年学过Python或其他什么)。

Traceback (most recent call last):
  File "python", line 1, in <module>
NameError: name 'Interface' is not defined

当我在Google上键入“Python 3.4 Interface”时,我获得了十万个与图形用户界面编程相关的链接,而不是Interfaces(我也在Python文档上搜索过,而且没有任何关于它的内容)。

那么,今天的Python如何用于文档目的的接口?他们这个概念是如此深刻以至于没有人能找到任何关于它的东西吗?它是旧的python版本中丢失的东西吗?如果是这样的话,为什么它会“掉线”?在某个地方有关于它的“官方”帖子吗?人们是否真的在Python 今天中使用Interfaces进行文档编制?如果他们这样做,他们如何呢?

1 个答案:

答案 0 :(得分:3)

Interface类来自zope.interface模块,它解释了为什么你没有在官方文档中找到它。

问题是,Zope不再使用 了(至少,不是很多新项目)。你仍会在遗留代码中看到它,但不是很多新代码。

如果您想坚持使用Python stdlib源代码,您可以将abstract base classes用于类似目的。

但实际上,Python代码中的接口根本不再使用。