如何解决从实例获取自定义通用类的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
是通用类Foo
的TypeVars。有什么想法吗?
我应该提到,我编写了一些类装饰器,方法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?
解决方法
您可以结合使用get_args
和__orig_bases__
来检查基类的通用类型:
class Foo(Generic[T,S]):
def get_type_vars(self) -> Tuple[TypeVar]:
return get_args(type(self).__orig_bases__[0])
对于更复杂的继承链,这将变得更加复杂。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。