子类化`typing.TypeDict`

问题描述 投票:0回答:1

我浏览了 PEP-0589,我想知道

typing.TypedDict
在子类化它时为什么/如何工作:

class A(TypedDict, total=False):
    x: int
    y: int

具体来说,

TypedDict
是一个公开
__mro_entries__
的函数,它又是一个返回元类构造函数的函数。 有几件事我不明白:

  1. 你可以子类化一个函数吗?这是如何运作的?
  2. 更令人惊讶的是传递
    total
    kwarg - 该变量是如何提供给
    TypedDict
    构造函数的?

我真的很感激有人详细解释这个魔法并提供文档,因为我在官方文档中找不到它。

python metaclass
1个回答
0
投票

它实际上是

__mro_entries__
提供的
TypedDict
让你可以继承它。来自其文档

如果类定义中出现的基类不是

type
的实例,则在该基类上搜索
__mro_entries__()
方法。如果找到 mro_entries() 方法,则 创建类时,基类将被替换为
__mro_entries__()
的调用结果。

© www.soinside.com 2019 - 2024. All rights reserved.