【发布时间】:2018-03-11 06:51:21
【问题描述】:
typing.Tuple 类可以与任意数量的类型参数一起使用,例如 Tuple[int, str, MyClass] 或 Tuple[str, float]。我如何实现我自己的可以这样使用的类?我了解如何从typing.Generic 继承。下面的代码演示了这一点。
from typing import TypeVar, Generic
T = TypeVar("T")
class Thing(Generic[T]):
def __init__(self, value: T):
self.value = value
def f(thing: Thing[int]):
print(thing.value)
if __name__ == '__main__':
t = Thing("WTF")
f(t)
上面的代码可以工作,但类型检查器(在我的例子中是 PyCharm)会发现t 的类型应该是Thing[int] 而不是Thing[str]。这一切都很好,但是我如何让Thing 类支持任意数量的类型参数,就像Tuple 一样?
【问题讨论】:
-
谢谢@StephaneBersier。一段时间后我确实意识到这在 Python 中是不可能的。
标签: python-3.x types typing variadic