【发布时间】:2021-07-03 13:36:17
【问题描述】:
我正在尝试从 typing.Union 派生一个类,并使用类型参数进行参数化,但我收到了一个我不理解的 TypeError。
这些都可以正常工作:
import typing
class Foo(typing.Dict[str, int]): pass
class Bar(typing.Union[str]): pass
typing.Union[str, int]
(当然,Union[str] 是多余的,可能只是str。)
但以下引发TypeError: __init__() takes 2 positional arguments but 4 were given:
class Foo(typing.Union[str, int]): pass
class Foo(typing.Optional[str]) 引发相同的错误,这是有道理的,因为 typing.Optional[str] 等同于 typing.Union[NoneType, str]。
另一方面,如果出于某种原因应该避免子类化Union 而子类化Dict 或List 很好(我在this portion of the Mypy docs 之后模糊地建模我的代码),我想知道它是什么。
【问题讨论】:
标签: python python-typing