簡體   English   中英

如何為從通用 class 繼承的 class 提供類型提示

[英]How to give type hint to a class that inherits from Generic class

我在 Python 中有一個通用 class 聲明如下:

class BaseClass(Generic[T]):
   def my_func(self):
      pass

有 3 個 class 繼承自此通用 class:

class ClassA(BaseClass[Dog]):
   ...

class ClassB(BaseClass[Cat]):
   ...

class ClassC(BaseClass[Horse]):
   ...

現在我想寫一個 function ,其參數可以是上述 3 個類之一。

我試着寫:

def my_func(my_arg: BaseClass):
   my_arg.my_func()

但是,mypy 會拋出錯誤:

 error: "BaseClass" not callable  [operator] 

你知道給 my_arg 什么類型的提示嗎?

您可以使用上述答案中提到的Union [answer 1] ,或者(如果您有很多類)創建一個新的 typeVar [answer 2]

答案1:

from typing import Union

def my_func(my_arg: Union[ClassA, ClassB, ClassC]):
    ...

答案2:

from typing import Union, NewType

GenericType = NewType('GenericType', Union[ClassA, ClassB, ClassC])

def my_func(my_arg: GenericType):
    ...
from typing import Union


def my_func(my_arg: Union[ClassA, ClassB]):
    my_arg.my_func()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM