如何扩展泛型类

时间:2019-07-31 06:44:37

标签: python generics

我想在python中扩展一个通用类并在我的基类中重写其某些方法,下面的示例无法编译

   class __SyncProductRepo(SyncStore[Product]): ...

如何扩展通用基类SyncStore

我正在venv环境下使用python 3.7

有关更多信息,请参见以下片段

我有一个像下面这样的通用类

   class AsyncStore(Generic[I]): ...

其中[I]是可识别类别的孩子

   class Identifiable(Generic[T]): ...

和[T]是可识别(get_id)方法的返回类型, 在AsyncStore中,确保类型I是可识别的子代,我将其包括在内

   I = TypeVar('I', bound=Identifiable[Any])

这是我打算使用该代码的方式 product.py如下

   class Product(BaseModel, Identifiable[str]):

    def get_id(self) -> str:
        return self._id
   ...

__ SyncproductRepo.py如下

   class __SyncProductRepo(SyncStore[Product]): ...

我期望它应该编译并执行

   class __SyncProductRepo(SyncStore[Product]): ...

这不会编译,并以

失败
   TypeError: Parameters to generic types must be types. Got <module 'src.models.Product' ...

1 个答案:

答案 0 :(得分:0)

由于@shmee的答案,我发现了问题所在。我导入了错误的产品而不是产品。谢谢