2024-10-06 12:25:44 发布
网友
我试图理解Zope接口是如何工作的。我知道Interface只是InterfaceClass的一个实例,它只是一个普通类。但若接口只是一个类实例,为什么它可以作为基类来继承呢?在
例如。 类IFoo(接口): 通过
你能给我一些见解吗?谢谢您。在
Python天生是灵活的,任何对象都可以是基类,只要它看起来像基类。与Python的一贯情况一样,这意味着实现一些在Python类上可以找到的属性。在
接口类(或者它的基本规范和元素)设置了几个。查找以双下划线(__)开头的变量集,以了解:
__
__module__:包含python路径模块的字符串。
__module__
__name__:定义类时使用的名称。
__name__
__bases__:这个类的基类。
__bases__
__doc__:(可选)类的docstring。
__doc__
此外,InterfaceClass __init__方法在用作基类时将被调用;Python基本上将基类视为元类,每当我们在类定义中使用基类时,都会创建基类类的新实例(元类)。这意味着将向__init__方法传递新的__name__和{}值,以及作为关键字参数的所有新类属性(包括__module__和可选的__doc__)。在
__init__
这些都记录在Standard type hierarchy section of the Python Data Model document(查找关于特殊属性的“classes”段落)和the same document, in the Customizing class creation section(具有__class__属性的基类被视为一个类型)中。在
__class__
因此,任何至少定义__module__、__name__和{}属性的python实例,以及合适的__init__方法,都可以作为其他类的基类。其余的由Python完成。在
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__
属性的基类被视为一个类型)中。在因此,任何至少定义}属性的python实例,以及合适的
__module__
、__name__
和{__init__
方法,都可以作为其他类的基类。其余的由Python完成。在相关问题 更多 >
编程相关推荐