从实例获取自定义泛型类的 TypeVars

我有这样的事情:


from typing import TypeVar, Generic, Tuple


T = TypeVar('T')

S = TypeVar('S')

U = TypeVar('U')


class Foo(Generic[T, S]):

    def get_type_vars(self) -> Tuple[TypeVar]:

        return  #TODO how do I return T and S here?


assert Foo().get_type_vars() == (T, S)

有什么办法可以得到这种行为吗?我需要一种方法来找出 和S是T通用 Class 的 TypeVars Foo。有任何想法吗?


我应该提到,我编写了一些类装饰器,并且该方法get_type_vars()将由装饰器添加到类中。self所以我所拥有的只是方法中的实例:


def get_type_vars(self) -> Tuple[TypeVar]:

        return  #TODO how do I return T and S here in case that self is an instance of Foo?



哆啦的时光机
浏览 78回答 1
1回答

宝慕林4294392

您可以get_args结合使用来__orig_bases__检查基类的泛型类型:class Foo(Generic[T, S]):    def get_type_vars(self) -> Tuple[TypeVar]:        return get_args(type(self).__orig_bases__[0])不过,对于更复杂的继承链来说,这会变得更复杂一些。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python