[英]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.