Python额外关键字(?)继承人

2024-03-29 10:38:24 发布

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

typing.py(来自与Anaconda捆绑的Python 3.6.6)声明List类,如下所示:

class List(list, MutableSequence[T], extra=list):

就我的理解而言,这意味着List类继承了list和{})。继承列表中extra赋值的含义是什么?在


Tags: py声明typing列表anacondaextralistclass
1条回答
网友
1楼 · 发布于 2024-03-29 10:38:24

Intyping.pyGenericMeta接受extra关键字参数。extra参数只是GenericMeta用于内部记账的参数之一。更新发生在GenericMeta__new__中:

namespace.update({'__origin__': origin, '__extra__': extra,
                      '_gorg': None if not origin else origin._gorg})

从这一点起,cls.__extra__就成为Typing内部API的一部分,非常类似于__getattr__或{}。从源代码来看,__extra__似乎是用来帮助为传入的类设置属性:

^{pr2}$

这段代码使用__extra__来设置_abc_registry和{}

相关问题 更多 >