我正在尝试定义用于typehinting的自定义元类型。例如
print(Tuple[int, str, bool])
print(CustomType[int, str, bool])
显然,第一行工作正常。我如何实现CustomType
,以便它也可以工作?我试过这个:
class CustomType(Tuple):
pass
并获取错误TypeError: __main__.CustomType is not a generic class
。
我的目标是使用额外的classmethod
答案 0 :(得分:0)
AFAIK你可以这样做,但是以一种克制的形式,我不认为你可以指定可变数量的参数,而是指定args的确切数量。
当您将其作为基类提供时,您需要向Tuple
提供一些类型变量:
from typing import Tuple, TypeVar
T1, T2, T3 = TypeVar('T1'), TypeVar('T2'), TypeVar('T3')
class CustomType(Tuple[T1, T2, T3]):
pass
print(CustomType[int, str, bool])
# __main__.CustomType[int, str, bool]
现在可以附加3
种类型,您需要为CustomType(Tuple[T1, T2])
类型创建2
的自定义类型,依此类推。
另外,Tuple
中添加了对Callable
(和3.6+
)子类化的支持,可用于{{1}}。