我有一个从typing.Generic
继承并传入一个TypeVar
作为参数的类
在代码的后面,我想:
TypeVar
参数return
Python中有什么方法可以实现这一点吗
我唯一缺少的是步骤1,如何从类型变量中获取类型参数
我的用例
from abc import ABC, abstractmethod
from typing import TypeVar, Generic
TFloat = TypeVar("TFloat", bound=float)
class BaseDataClass(Generic[TFloat], ABC):
@property
@abstractmethod
def data(self) -> TFloat:
"""Get data."""
class ChildDataClass(BaseDataClass[int]):
@property
def data(self) -> int:
return 1
然后我将BaseDataClass
和ChildDataClass
导入另一个模块
在第二个模块中,是否有某种方法可以静态地从BaseDataClass
获取TFloat
参数,或者从ChildDataClass
获取int
参数,并在mypy
中使用它
仅供参考:我正在使用Python 3.8.2
没有“获取”类型变量的方法。您不应该将类型变量视为可以以某种方式提取的数据块。相反,将其视为定义的一部分
我想根据你的问题,你真正想要的是一种编写函数的方法,它接受一些
BaseDataClass[T]
(或这种类型的子类),并返回任何T
如果是这样,请创建一个函数,该函数与您想要接受的内容的定义相匹配。但是不要指定内部类型必须是特定的,而是使用泛型来捕获它
在本例中,我们选择匹配
BaseDataClass[T]
类型的任何内容,其中我们将T保持为泛型。而我们的回报类型将是与之匹配的任何类型有关更多详细信息和示例,请参见mypy docs on generics
相关问题 更多 >
编程相关推荐