Skip to main content
 首页 » 编程设计

python之如何暗示一个变量是一个继承自另一个类的类

2025年05月04日23zhenyulu

考虑这个人为设计的代码片段:

class Fooer(): 
    def __init__(self, *args, **kwargs): 
        # do things 
 
    def foo(self) -> int: 
        # do more things 
 
def foo(fooer, *args, **kwargs) -> int: 
    return x(*args, **kwargs).foo() 

我想暗示 foo() 的 fooer 参数应该是 Fooer 的子类。它不是 Fooer 的实例,它是 Fooer 本身或其子类。我能想到的最好的是

def foo(fooer: type, *args, **kwargs) -> int 

不够具体。

我怎样才能更好地暗示这一点?

请您参考如下方法:

根据 PEP-484 ( The type of class objects ),解决方案是使用 Type[C] 来指示 C 的子类,其中 C 是由您的基类限定的类型 var。

F = TypeVar('F', bound=Fooer) 
 
def foo(fooer: Type[F], *args,**kwargs) -> int: 
    ... 

(公平地说,我不太明白这里使用 TypeVar 和使用 @e.s. 的回答中的类本身之间的区别,如 PEP-484 所示。)