为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哆啦的时光机 2023-09-12 17:11:32
我有这样的事情:from typing import TypeVar, Generic, TupleT = 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?
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以get_args结合使用来__orig_bases__检查基类的泛型类型:


class Foo(Generic[T, S]):

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

        return get_args(type(self).__orig_bases__[0])

不过,对于更复杂的继承链来说,这会变得更复杂一些。


查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信