我试图通过在 python 中使用泛型类型来减少一些代码重复。通过这个最小的例子
from typing import Generic, TypeVar
from pydantic import BaseModel
T = TypeVar("T")
class Foo(BaseModel, Generic[T]):
a: T
Bar = list[Foo[T]]
class Baz(BaseModel, Generic[T]):
b: Bar[T]
我收到以下类型错误:
TypeError:列表[main.Foo]中没有剩余类型变量
如果我用
Bar
替换 Baz
类中的别名 list[Foo[T]]
,一切正常,那么这是别名的普遍问题吗?谢谢。
你不需要再次占卜Bar[T]:
class Baz(BaseModel, Generic[T]):
b: Bar
因此
b
被定义为 Bar
,您已经给出了通用 [T]
的列表。
from typing import Generic, TypeVar
from pydantic import BaseModel
T = TypeVar("T")
class Foo(BaseModel, Generic[T]):
a: T
Bar = list[Foo[T]]
class Baz(BaseModel, Generic[T]):
b: Bar