如何实现Zope接口?

2024-10-06 12:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解Zope接口是如何工作的。我知道Interface只是InterfaceClass的一个实例,它只是一个普通类。但若接口只是一个类实例,为什么它可以作为基类来继承呢?在

例如。 类IFoo(接口): 通过

你能给我一些见解吗?谢谢您。在


Tags: 实例zope基类interfaceifoointerfaceclass
1条回答
网友
1楼 · 发布于 2024-10-06 12:25:44

Python天生是灵活的,任何对象都可以是基类,只要它看起来像基类。与Python的一贯情况一样,这意味着实现一些在Python类上可以找到的属性。在

接口类(或者它的基本规范和元素)设置了几个。查找以双下划线(__)开头的变量集,以了解:

  • __module__:包含python路径模块的字符串。

  • __name__:定义类时使用的名称。

  • __bases__:这个类的基类。

  • __doc__:(可选)类的docstring。

此外,InterfaceClass __init__方法在用作基类时将被调用;Python基本上将基类视为元类,每当我们在类定义中使用基类时,都会创建基类类的新实例(元类)。这意味着将向__init__方法传递新的__name__和{}值,以及作为关键字参数的所有新类属性(包括__module__和可选的__doc__)。在

这些都记录在Standard type hierarchy section of the Python Data Model document(查找关于特殊属性的“classes”段落)和the same document, in the Customizing class creation section(具有__class__属性的基类被视为一个类型)中。在

因此,任何至少定义__module____name__和{}属性的python实例,以及合适的__init__方法,都可以作为其他类的基类。其余的由Python完成。在

相关问题 更多 >