【发布时间】:2017-10-23 07:16:44
【问题描述】:
我试图了解 Python 的类型注释是如何工作的(例如 List 和 Dict - 不是 list 或 dict)。具体来说,我对isinstance(list(), List) 的工作原理很感兴趣,因此我可以创建自己的自定义注释。
我看到List被定义为:
class List(list, MutableSequence[T], extra=list):
. . .
我对@987654328@ 很熟悉,但我找不到关于此extra = xxx 的任何文档。这是一个关键字还是只是一个参数,如果是,它来自哪里,它是否符合我的要求?它甚至与isinstance 相关吗?
【问题讨论】:
-
它没有被记录的事实要么意味着a)它不是公共API的一部分,要么b)它被遗忘了;我这里倾向于第一个。查看
typing的源代码,您可以看到extra已用于,我引用:“构造一个__subclasshook__可调用对象,在针对cls执行的子类检查中合并关联的__extra__类。”跨度> -
顺便说一句,您的标题和问题真的不匹配。看来您的问题确实涉及
extras 在isinstance中的角色,而不是广义上的isinstance的工作原理。
标签: python python-3.x metaclass type-hinting isinstance