考虑以下人为设计的代码段:
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()
我想暗示
fooer
的foo()
参数应该是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:
...
(公平地说,我在PEP-484指示的此处使用
TypeVar
与在@ e.s。的答案中使用类本身之间并没有什么区别。)关于python - 如何暗示变量是从另一个类继承的一个类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50822164/