gpt4 book ai didi

Python - 额外的关键字(?)和继承

转载 作者:行者123 更新时间:2023-12-01 08:25:14 24 4
gpt4 key购买 nike

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

类列表(列表,MutableSequence[T],extra=列表):

据我的理解,这意味着List类继承自listMutableSequence[T])。继承列表中extra赋值的含义是什么?

最佳答案

typing.py 类中,GenericMeta 采用 extra 关键字参数。 extra 参数只是 GenericMeta 用于内部记账的参数之一。更新发生在 GenericMeta__new__ 中:

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

从此时起,cls.__extra__ 成为 Typing 内部 API 的一部分,非常类似于 __getattr____len__.从源代码来看,__extra__ 用于帮助设置其传递到的类的属性:

def __init__(self, *args, **kwargs):
super(GenericMeta, self).__init__(*args, **kwargs)
if isinstance(self.__extra__, abc.ABCMeta):
self._abc_registry = self.__extra__._abc_registry
self._abc_cache = self.__extra__._abc_cache
elif self.__origin__ is not None:
self._abc_registry = self.__origin__._abc_registry
self._abc_cache = self.__origin__._abc_cache

此代码使用__extra__来设置_abc_registry_abc_cache

关于Python - 额外的关键字(?)和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54299879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com